ホームページ > バックエンド開発 > C++ > C でメンバー関数ポインターを外部関数に渡すにはどうすればよいですか?

C でメンバー関数ポインターを外部関数に渡すにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-29 06:25:14
オリジナル
750 人が閲覧しました

How to Pass Member Function Pointers to External Functions in C  ?

メンバー関数ポインターを外部関数に渡す

メンバー関数ポインターを引数として外部関数に渡すことは、特にクラス型を扱う場合には注意が必要な場合があります。 。この質問は、クラスのメンバー関数をメンバー関数ポインターを期待する関数に渡す必要がある特定のシナリオに焦点を当てています。

これを実現するには、外部関数にはオブジェクトへのポインターとメンバー関数へのポインタ。指定されたコード スニペットでは、外部関数 MenuButton::SetButton() はオブジェクトへのポインタを ButtonObj として受け取り、メンバー関数へのポインタを ButtonFunc として受け取ります。

解決策には、オブジェクト ポインタとメンバーの両方を渡すことが含まれます。 MenuButton::SetButton() への関数ポインタ。提供されたクラス testMenu では、コンストラクターは x.SetButton(...) を呼び出し、これをオブジェクト ポインターとして渡し、test2 をメンバー関数ポインターとして渡します。これにより、外部関数が呼び出されたときに、オブジェクトとそのメンバー関数の両方にアクセスできるようになります。

変更されたコードは次のとおりです。

testMenu::testMenu()
  :MenuScreen("testMenu")
{
  x.SetButton(100,100,TEXT("buttonNormal.png"), TEXT("buttonHover.png"),
        TEXT("buttonPressed.png"), 100, 40, this, &testMenu::test2);
  draw = false;
}
ログイン後にコピー

外部関数内 MenuButton::SetButton ()、オブジェクト ポインターとメンバー関数ポインターを使用して、次の構文を使用してメンバー関数を呼び出すことができます。 ((ButtonObj)->*(ButtonFunc))();.

以上がC でメンバー関数ポインターを外部関数に渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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