C++で可能ですか?たとえば、パラメーターをとらず、戻り値の型が void である関数へのポインターがあります。
void (*f)();
および関数オブジェクト:
class A
{
public:
void operator()() { cout << "functor\n"; }
};
オブジェクトf
のアドレスに割り当てることはできますか? A
そして、ファンクターを呼び出すf()
ために呼び出すときは?A
私はこれを試しましたが、うまくいきません:
#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
これを達成する方法はありますか?