ボタンのクリック関数として任意のクラスの非静的メンバー関数を渡したい場合はどうすればよいですか?出来ますか ?もしそうなら、私は何をする必要がありますか?たとえば、どのクラス(ここではEntityToolGUI)でボタンが開始されたとしても、そのクリックアクションをそのクラスの非静的メンバー関数(クラスEntityToolGUIの非静的メンバー関数)に設定したいと思います。
GUIButton.h
typedef void (*ptr2clickFunc)(void);
class GUIButton : public GUIObject {
private : void (*clickFunc)(void);
public : void setClickFunction(ptr2clickFunc clickFunc);
};
GUIButton.cpp
void GUIButton::setClickFunction(ptr2clickFunc clickFunc)
{
this->clickFunc = clickFunc;
}
EntityToolGUI.h
class EntityToolGUI {
public : EntityToolGUI();
protected : void addAnimation();
}
EntityToolGUI.cpp
void EntityToolGUI::addAnimation()
{
cout<<"add animation"<<endl;
}
EntityToolGUI::EntityToolGUI()
{
....
btnAddAnimation->setClickFunction(&EntityToolGUI::addAnimation);
}
GUIButton :: setClickFunction(void(EntityToolGUI :: *)())への一致する関数呼び出しがないというエラーが発生します
候補はvoidGUIButton:: setClickFunction(void(*)())
これを解決するにはどうすればよいですか?