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?
谢谢
现在你有一个成员函数返回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是跟踪函数指针类型的最简单和最好的方法.
| 归档时间: |
|
| 查看次数: |
2894 次 |
| 最近记录: |