के साथ फ़ंक्शन पॉइंटर्स का उपयोग करना मैं एक फ़ंक्शन को पैरामीटर के रूप में किसी अन्य फ़ंक्शन में पास करने का प्रयास कर रहा हूं, और वे दोनों एक ही कक्षा के सदस्य कार्य होते हैं।सी ++: सदस्य फ़ंक्शंस
मुझे एक अजीब त्रुटि मिल रही है और मैं यह नहीं समझ सकता कि समस्या क्या है।
यहाँ मेरी कार्य हैं:
void myClass::functionToPass()
{
// does something
}
void myClass::function1(void (*passedFunction)())
{
(*passedFunction)();
}
void myClass::function2()
{
function1(&myClass::functionToPass);
}
हालांकि, मैं निम्न त्रुटि हो रही है:
cannot convert parameter 1 from 'void(__thiscall myClass::*) (void)'
to 'void(__cdecl*)(void)'
तो क्या देता है? मुझे लगता है कि मैंने इसे काम करने के लिए हर बदलाव की कोशिश की है। क्या आप सदस्य कार्यों के लिए फ़ंक्शन पॉइंटर्स भी पास कर सकते हैं? में इससे कैसे चला सकता हूँ?
नोट: फ़ंक्शन टॉपास स्थिर बनाना वास्तव में एक वैध विकल्प नहीं है।
त्रुटि संदेश आपको समस्या को ठीक करने के लिए सभी आवश्यक जानकारी देता है। –
'बूस्ट :: फ़ंक्शन' का उपयोग फ़ंक्शन पॉइंटर्स का उपयोग करने से आसान हो सकता है। आपको यह जांचना होगा कि क्या यह 'boost :: function' होना चाहिए (जिस स्थिति में 'function2' को' यह 'बांधना चाहिए) या' boost :: function '(जिस स्थिति में 'function1' '* यह' पास करना चाहिए) –
MSalters