我對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();
}
但是,編譯失敗:
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();
^
我一直試圖*的各種組合, &個字符,並搜索解決方案,但不能得到它的工作。
任何想法?
將「如何調用成員函數指針C++」粘貼到Google中。今天一定是你的幸運日,因爲這是第一個結果! –
錯誤消息字面上告訴你該怎麼做......你在任何階段都考慮閱讀嗎? –
哇,夥計們,爲什麼會有這種惡性?是的,我閱讀了錯誤信息,是的,我用Google搜索了它。對不起,但正確的結果是下面接受的答案,它不是答案,這個問題已被標記爲複製。另一個答案是:(bigCat。* pcat)();這個答案是:(this - > * myMethod)();有細微的差別(「。」而不是「 - >」和「this」而不是實際的變量名稱)。這些細微的差異很難找到像我這樣的C++新手。因此張貼在這裏。 – muslidrikk