尝试调用功能指针到成员函数时会出现编译错误
Got compile error when trying to invoke function pointer to member functions
我需要通过使用函数指针来调用成员函数,但我得到了编译错误
te5.cc:22:14: error: must use ‘.*’ or ‘->*’ to call pointer-to-member function in ‘fp (...)’, e.g. ‘(... ->* fp) (...)’
b.*fp(100);
这是代码段。任何想法如何使它起作用?
#include <stdio.h>
#include <string>
#include <stdio.h>
#include <string.h>
class A {
public:
void dum1(int a) { printf("A::dum1(%d)n", a);}
virtual void dum(int a) { printf("A::dum(%d)n", a);};
};
class B : public A {
public:
B() {
}
void dum(int a) { printf("B::dum(%d)n", a);}
};
typedef void (A::*RUNFUNC)(int a);
RUNFUNC fp = &A::dum; //, &A::dum};
int main (int argc, char *argv[]) {
B b;
b.*fp(100);
return 0;
}
b.*fp(100);
错误的语法,应该是(因为.*
的优先级低于()
)
(b.*fp)(100);
运算符优先级要求您在指针向成员的应用程序应用周围放置括号,并调用。这样:
(b.*fp)(100);
否则,将其解析为b.*(fp(100))
。愚蠢,但这是规则。
相关文章:
- 用MacOS Mojave编译C++:致命错误:mpi.h:没有这样的文件或目录
- std::is_base_of表示ctor编译错误
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- Qt5:使用QCommandLineParser类时出现奇怪的编译错误
- Qt Cmake 错误编译"GuiSupportQt not found"
- Opengl 精度转换错误编译错误 E0415
- 库将ARM架构错误编译为架构X64
- RT 音频 Mac 错误 g++ 编译错误
- 错误编译Boost.log
- 错误编译QT创建者 / QT窗口小部件示例
- 错误编译MIPS32
- Visual Studio 2013 中的错误(编译和运行代码)
- 链接错误编译qt项目在visual 2010
- 无法用模板错误编译nsgmls
- 奇怪的错误.编译失败
- 如果有人调用c++中的方法,则强制错误(编译时)
- 来自autoconf测试的错误编译命令
- 时间限制超出错误C++编译
- SFML 2.3 和 CodeBlocks 错误编译