在 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
有什么办法可以做到这一点?