如何将函数作为参数传递然后执行它。我正在尝试做这样的事情:
class Foo{
private:
void (*external);
public:
Foo(void (*function)()){ *external = *function; }
~Foo(){ }
bool Execute(){
*external(); // Somehow execute 'external' which does the same thing with 'function'
return true
}
};
void pFnc(){
printf("test");
}
int main(){
Foo foo = Foo(&pFnc);
foo.Execute();
return 0;
}
当然这不起作用。
答案 0 :(得分:2)
你很亲密。
class Foo
{
public:
typedef void(*FN)(void);
Foo(FN fn) : fn_(fn) {};
bool Execute()
{
fn_();
return true;
}
FN fn_;
};
void pFunc(){
printf("test");
}
int main()
{
Foo foo(&pFunc);
foo.Execute();
}
答案 1 :(得分:2)
尝试:
void (*external)();
您的原始声明是指向void的指针,而不是指向返回void的函数的指针。
答案 2 :(得分:1)
用
设置external = function;
并执行
external();
此外,必须将external声明为函数指针void (*external)()
。否则,你必须在函数和空指针之间进行转换。