我正在尝试使用成员函数指针进行一些测试。此代码有什么问题? bigCat.*pcat();
语句无法编译。
class cat {
public:
void walk() {
printf("cat is walking \n");
}
};
int main(){
cat bigCat;
void (cat::*pcat)();
pcat = &cat::walk;
bigCat.*pcat();
}
最佳答案
需要更多的括号:
(bigCat.*pcat)();
^ ^
函数调用(
()
)的优先级高于指针到成员的绑定(bind)运算符(.*
)。一元运算符的优先级高于二元运算符。关于c++ - 如何通过成员函数指针调用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12189057/