私は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
https://isocpp.org/wiki/faq/pointers-to-members#fnptr-vs-memfnptr-types 、特に[33.1]「ポインタからメンバー関数へ」の型は「ポインタから関数へ」と異なりますか?