如果我想将任何类的非静态成员函数作为按钮的点击函数传递,我该怎么办?这可行吗?如果可以,我需要做什么?例如,在初始化按钮的任何类(此处为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 :: *)())
可选项是void GUIButton :: setClickFunction(void(*)())
我该怎么解决?