मैं std::bind
का उपयोग करें और आधार वर्ग समारोह जैसे गैर आभासी कॉल करना चाहते हैं: derived_obj.BaseClass::foo()
std :: बाँध और गैर आभासी आधार वर्ग विधि करने के लिए कॉल
उदाहरण:
मान लीजिए कि मैं करते हैं बेस क्लास ए और व्युत्पन्न कक्षा बी। ए में वर्चुअल फ़ंक्शन foo()
है जो बी द्वारा ओवरराइड किया गया है।
class A
{
public:
virtual void foo() { std::cout << "Hello from A::foo()!";}
}
class B : public A
{
public:
void foo() overide { std::cout << "Hello from B::foo()!";}
}
मैं कक्षा बी की वस्तु से A::foo()
कॉल करने के लिए चाहते हैं मुझे क्या करना गैर आभासी कॉल:
B b_obj;
b_obj.A::foo(); // prints "Hello from A::foo()!"
अब मैं std::bind
का उपयोग और गैर आभासी क्या करना चाहते हैं b_obj से A::foo()
पर कॉल करें, मैं यह कैसे कर सकता हूं?
मैं पहले से ही को b_obj
कास्टिंग &A::foo()
का एक और उपयोग पता द्वारा की कोशिश की है, लेकिन कोई किस्मत थी।
auto f = std::bind(&A::foo, static_cast<A*>(&b_obj));
f(); // prints "Hello from B::foo()!" but it should print "Hello from A::foo()!"
आप लैम्बडा को कॉल लपेट सकते हैं। यह देखते हुए कि बाइंड के साथ इसे कैसे करना है। – Zereges