メンバー関数ポインターの呼び出し
メンバー関数ポインターを使用する場合、ポインターを介して関数を実行するのは困難なことがよくあります。この問題について詳しく考えてみましょう。
提供されたコード スニペットでは、メンバー関数ポインター pcat を介して cat クラスの walk メンバー関数を呼び出す試みが行われます。ただし、構文が間違っているため、コードはコンパイルに失敗します。
問題の根本は演算子の優先順位にあります。関数呼び出し演算子 (()) は、ポインターからメンバーへのバインディング演算子 (.*) よりも優先されます。さらに、単項演算子は二項演算子よりも優先されます。この問題を解決するには、以下に示すように追加のかっこが必要です。
(bigCat.*pcat)(); ^ ^
関数呼び出しをかっこで囲むことにより、関数呼び出しが最初に実行され、その後にメンバー関数ポインター pcat がバインドされることが保証されます。猫オブジェクトbigCat。この調整により、walk メンバー関数を正常に呼び出すことができます。
以上がC でメンバー関数ポインターを正しく呼び出すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。