1. ホーム
  2. c++

[解決済み】非静的メンバ関数への参照を呼び出す必要がある

2022-01-18 16:38:34

質問

C++を使用しています(C++11ではありません)。クラス内の関数へのポインタを作成する必要があります。私は次のようにしようとしています。

void MyClass::buttonClickedEvent( int buttonId ) {
    // I need to have an access to all members of MyClass's class
}

void MyClass::setEvent() {

    void ( *func ) ( int ); 
    func = buttonClickedEvent; // <-- Reference to non static member function must be called

}

setEvent();

しかし、「"非静的メンバ関数への参照を呼び出す必要があります"」というエラーが発生します。MyClassのメンバへのポインタを作るにはどうしたらいいのでしょうか?

どのように解決するのですか?

問題は buttonClickedEvent はメンバー関数であり、これを呼び出すにはメンバーへのポインタが必要です。

これを試してみてください。

void (MyClass::*func)(int);
func = &MyClass::buttonClickedEvent;

そして、それを起動するときに、型のオブジェクトが必要です。 MyClass を行うには、例えば this :

(this->*func)(<argument>);

http://www.codeguru.com/cpp/cpp/article.php/c17401/C-Tutorial-PointertoMember-Function.htm