メンバー関数ポインターを使用していくつかのテストを実行しようとしています。このコードの何が問題になっていますか? 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)();
^ ^
関数呼び出し(()
)は、メンバーへのポインター結合演算子(.*
)。単項演算子は、二項演算子よりも優先順位が高くなります。