我发现了一些有趣的东西。错误消息说明了一切。在获取非静态成员函数的地址时不允许括号的原因是什么?我在 gcc 4.3.4 上编译它。
#include <iostream>
class myfoo{
public:
int foo(int number){
return (number*10);
}
};
int main (int argc, char * const argv[]) {
int (myfoo::*fPtr)(int) = NULL;
fPtr = &(myfoo::foo); // main.cpp:14
return 0;
}
错误:main.cpp:14:错误:ISO C++ 禁止使用不合格或带括号的非静态成员函数的地址来形成指向成员函数的指针。说'&myfoo::foo'