如果我想将任何类的非静态成员函数作为按钮的点击函数传递怎么办?可能吗 ?如果是这样,我需要做什么?例如,在哪个类(此处的 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);
}
我收到一个错误 no matching function call to GUIButton::setClickFunction(void (EntityToolGUI::*)())
候选人是 void GUIButton::setClickFunction(void (*)())
我该如何解决这个问题?