我在类中定义函数指针,并尝试通过类的实例访问它,但它显示错误。

这是代码:

 1 #include<stdio.h>
 2
 3 class pointer {
 4 public:
 5    int (pointer::*funcPtr)(int);
 6    pointer() {
 7       funcPtr = &pointer::check;
 8    }
 9
10
11    int check(int a)
12    {
13       return 0;
14    }
15
16 };
17
18 int main()
19 {
20    pointer *pt=new pointer;
21    return (pt->*funcPtr)(3);
22 }

它显示了编译时错误:
checkPointer.cpp:21:15: error: ‘funcPtr’ was not declared in this scope

请帮我。

先感谢您。

最佳答案

这里的问题是funcPtr是在pt内部声明的,因此您需要使用两次名称pt-一次用作指针到成员选择的左侧,一次选择要从中选择的指针类funcPtr:

(fn->*(fn->funcPtr))(3);

这样做的原因是,您可能会在另一个指针实例上调用一个指针实例的funcPtr成员指向的函数。

希望这可以帮助!

09-13 04:27