在成员函数上调用函数指针 我对C++非常陌生(经过许多java年)。 我尝试使用一个函数指针指向我的类的成员函数,如下所示: class MyClass { public: MyClass(); void foo(); void bar(); }; MyClass::MyClass(){} void MyClass::bar(){} void MyClass::foo() { void (MyClass::*myMethod)(); myMethod = &MyClass::bar; //-----THIS IS THE LINE WITH PROBLEM----------- myMethod(); }

在成员函数上调用函数指针 我对C++非常陌生(经过许多java年)。 我尝试使用一个函数指针指向我的类的成员函数,如下所示: class MyClass { public: MyClass(); void foo(); void bar(); }; MyClass::MyClass(){} void MyClass::bar(){} void MyClass::foo() { void (MyClass::*myMethod)(); myMethod = &MyClass::bar; //-----THIS IS THE LINE WITH PROBLEM----------- myMethod(); },c++,function-pointers,C++,Function Pointers,但是,编译器失败: test.cpp: In member function ‘void MyClass::foo()’: test.cpp:22:14: error: must use ‘.*’ or ‘->*’ to call pointer-to-member function in ‘myMethod (...)’, e.g. ‘(... ->* myMethod) (...)’ myMethod(); ^ 我一直在尝试各种*、&字符的组合,并

但是,编译器失败:

test.cpp: In member function ‘void MyClass::foo()’:
test.cpp:22:14: error: must use ‘.*’ or ‘->*’ to call pointer-to-member function in ‘myMethod (...)’, e.g. ‘(... ->* myMethod) (...)’
     myMethod();
          ^
我一直在尝试各种*、&字符的组合,并在谷歌上搜索解决方案,但无法使其发挥作用


有什么想法吗?

myMethod
是一个成员函数,因此需要在它所属的类的实例上调用它。由于您已经在成员函数中,因此可以使用

(this->*myMethod)()

将“如何调用成员函数指针C++粘贴到google中。今天一定是你的幸运日,因为这是第一个结果!错误消息会告诉你该怎么做。。。你在任何阶段都会考虑阅读吗?哇,伙计们,为什么会这样?是的,我读了错误信息,是的,我用谷歌搜索了它。很抱歉,正确的结果是下面被接受的答案,它与此问题被标记为重复的答案不同。另一个答案是:(bigCat.*pcat)();这个答案是:(这个->*myMethod)();有细微的区别(“.”而不是“->”和“this”而不是实际的变量名)。对于像我这样的C++新手来说,这些细微的差别是很难发现的。因此在这里发布。