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
有什么办法来实现这一目标?
你不能只使用'std :: function'? –
chris
有没有办法用旧的标准来做到这一点,在C++ 11之前呢? –