ホームページ > バックエンド開発 > C++ > C でポインターを使用してメンバー関数を正しく呼び出す方法

C でポインターを使用してメンバー関数を正しく呼び出す方法

Linda Hamilton
リリース: 2024-12-24 04:32:13
オリジナル
812 人が閲覧しました

How to Correctly Call a Member Function Using a Pointer in C  ?

メンバー関数ポインターを介した呼び出し

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート