के साथ वर्चुअल सदस्य फ़ंक्शन की बेस क्लास परिभाषा को कॉल करना मैं सदस्य फ़ंक्शन पॉइंटर का उपयोग करके वर्चुअल फ़ंक्शन के बेस क्लास कार्यान्वयन को कॉल करना चाहता हूं।फ़ंक्शन पॉइंटर
class Base {
public:
virtual void func() { cout << "base" << endl; }
};
class Derived: public Base {
public:
void func() { cout << "derived" << endl; }
void callFunc()
{
void (Base::*fp)() = &Base::func;
(this->*fp)(); // Derived::func will be called.
// In my application I store the pointer for later use,
// so I can't simply do Base::func().
}
};
समारोह के व्युत्पन्न वर्ग कार्यान्वयन उपरोक्त कोड में callFunc से बुलाया जाएगा। क्या कोई तरीका है कि मैं सदस्य फ़ंक्शन पॉइंटर को सहेज सकता हूं जो बेस :: func को इंगित करता है, या मुझे किसी तरह से using
का उपयोग करना होगा?
मेरे वास्तविक एप्लिकेशन में मैं बूस्ट :: बाइंड ऑब्जेक्ट को कॉलफंक्शन में बनाने के लिए बूस्ट :: बाइंड का उपयोग करता हूं जिसे बाद में मैं अपने प्रोग्राम के किसी अन्य भाग से func कॉल करने के लिए उपयोग करता हूं। तो अगर बढ़ावा :: बाइंड या बूस्ट :: फ़ंक्शन के पास इस समस्या को हल करने का कोई तरीका है जो भी मदद करेगा।
[सी ++ का संभावित डुप्लिकेट: वर्चुअल सदस्य फ़ंक्शन के मोनोमोर्फिक संस्करण के लिए पॉइंटर?] (Https://stackoverflow.com/questions/5064614/c-pointer-to-monomorphic-version-of-virtual-member- कार्यक्षमता) –