メンバー関数ポインターを外部関数に渡す
メンバー関数ポインターを引数として外部関数に渡すことは、特にクラス型を扱う場合には注意が必要な場合があります。 。この質問は、クラスのメンバー関数をメンバー関数ポインターを期待する関数に渡す必要がある特定のシナリオに焦点を当てています。
これを実現するには、外部関数にはオブジェクトへのポインターとメンバー関数へのポインタ。指定されたコード スニペットでは、外部関数 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 サイトの他の関連記事を参照してください。