访问类内部的函数指针
Accessing function pointer inside class
我在一个类中定义函数指针,并试图通过该类的实例访问它,但它显示了一个错误。
这是代码:
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成员所指向的函数。
希望这能有所帮助!
我想你指的是
pt->*(pt->funcPtr)(3);
我建议您按照C++常见问题解答中的说明进行操作。通常情况下,作者会避免typedef
s和#define
s,但在这种情况下,他会例外:
#define CALL_MEMBER_FN(object,ptrToMember) ((object).*(ptrToMember))
…
CALL_MEMBER_FN(*pt, pt->funcPtr)(3)
附言:即使你没有按照这些说明去做,也要读那一页。它包含大量关于指向成员函数的指针的有用信息。
相关文章:
- QMetaObject invokeMethod的基于函数指针的语法
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- c++r值引用应用于函数指针
- 模板函数指针和lambda
- 是否可以将llvm::FunctionType转换为C/C++原始函数指针
- 带有类的函数指针
- () 函子后面的括号,而不是函数指针?
- 全局作用域中函数指针的赋值
- 使用"Task"函数指针队列定义作业管理器
- 将成员函数指针作为参数传递给模板方法
- 如何创建对象函数指针C++映射?
- 匹配函数指针作为模板参数?
- 通过函数指针定义类范围之外的方法
- 存储在类中的函数指针
- C++从函数指针数组调用函数
- 将返回值存储在函数指针数组的指针中是如何工作的?
- 整数键映射到头文件中的成员函数指针
- 从类成员函数到类 C 函数指针的转换
- 如何将内联匿名函数分配给C++函数指针
- 将字符缓冲区强制转换为函数指针