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之前呢? –