फ़ंक्शन ऑब्जेक्ट करने के लिए पॉइंटर असाइन करें क्या यह C++ में संभव है?किसी फ़ंक्शन में पॉइंटर को ऑब्जेक्ट
void (*f)();
और और एक समारोह वस्तु:
class A
{
public:
void operator()() { cout << "functor\n"; }
};
यह f
पता करने के लिए आवंटित करने के लिए संभव है उदाहरण के लिए मैं एक समारोह है कि कोई पैरामीटर और उसके वापसी प्रकार शून्य है लेता है करने के लिए एक सूचक है A
ऑब्जेक्ट का? और जब मैं A
फ़ंक्शन को कॉल करने के लिए f()
पर कॉल करता हूं?
मैं इस कोशिश की, लेकिन यह काम नहीं करता:
#include <iostream>
using namespace std;
class A
{
public:
void operator()() { cout << "functorA\n"; }
};
int main()
{
A ob;
ob();
void (*f)();
f = &ob;
f(); // Call ob();
return 0;
}
मैं C:\Users\iuliuh\QtTests\functor_test\main.cpp:15: error: C2440: '=' : cannot convert from 'A *' to 'void (__cdecl *)(void)' There is no context in which this conversion is possible
वहाँ किसी भी तरह से इस लक्ष्य को हासिल करने के लिए है मिल सकता है?
तुम सिर्फ 'std :: समारोह' का उपयोग नहीं कर सकते हैं? –
chris
क्या पुराने मानक के साथ ऐसा करने का कोई तरीका है, सी ++ 11 से पहले एक? –