C では、メンバー関数ポインターを使用すると、ポインターを介してメンバー関数を通常の関数のように扱うことができます。ただし、コンパイル エラーを回避するには、特定の構文規則に従う必要があります。
メンバー関数ポインターを使用して cat クラスの walk メンバー関数を呼び出す次のコードを考えてみましょう。
class cat { public: void walk() { printf("cat is walking \n"); } }; int main(){ cat bigCat; void (cat::*pcat)(); pcat = &cat::walk; bigCat.*pcat(); }
上記のコードは、「bigCat.*pcat(); ステートメントがコンパイルされません」というエラーが発生してコンパイルに失敗します。これは、構文に優先順位の問題があるために発生します。
メンバー関数ポインターでは "." 演算子が使用されますが、関数呼び出しでは通常のかっこが使用されます。関数呼び出しの優先順位は「」よりも高くなります。
問題を解決するには、優先順位ルールをオーバーライドするためにかっこを追加する必要があります:
(bigCat.*pcat)();
この修正により、コードはメンバー関数ポインターを介して walk 関数を適切に呼び出すようになります。 .
以上がC でポインターを使用してメンバー関数を正しく呼び出す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。