使用函数指针?

jma*_*erx 2 c++ function-pointers

我对这些还不是很熟悉,但也许有人可以对这个例子有所了解.

想象一下,我有类CFoo,它将有一个函数来添加一个处理程序和一个函数指针.

所以像这样:

class CFoo {

int *pointedFunc(int a, int b) = 0;

void setFunc(int *func(int a, int b))
{
    pointedFunc = func;
}
};
Run Code Online (Sandbox Code Playgroud)

鉴于上述情况,我想知道这样做的正确方法.我不认为我做得很好.另外,我怎么去调用pointedFunc?

谢谢

Ben*_*igt 8

现在你有一个成员函数返回int *,而不是返回函数的指针int.一组括号将解决这个问题.

int (*pointedFunc)(int a, int b);

void setFunc(int (*pfunc)(int a, int b))
{
    pointedFunc = pfunc;
}
Run Code Online (Sandbox Code Playgroud)

此外,成员变量在构造函数ctor-initializer-list中初始化,如

CFoo::CFoo() : pointedFunc(0) {}
Run Code Online (Sandbox Code Playgroud)

不喜欢你.你= 0实际上是一个纯粹的说明符(除非成员函数是虚拟的,否则它将不起作用),当你修复指针返回类型vs指向函数指针时,你会发现编译器也会抱怨你的尝试初始化它.

使用Grademe建议的typedef是跟踪函数指针类型的最简单和最好的方法.