私はGUIに取り組んでおり、ボタンに関数ポインタを渡すことができるようにしたいのですが、これらはさまざまな種類のクラスから呼び出される可能性があるため、テンプレートを使用しました。
関数ポインタを正しく保存していると思いますが、正しく呼び出すことができません。
class MainMenuScene: public Scene
{
public:
void add_button(){
void (MainMenuScene::*func)();
func = &MainMenuScene::test;
Button b(func);
b.click();
}
void test();
private:
GUI<MainMenuScene> gui;
};
template<class T>
class Button: public GUI_object{
public:
Button(void (T::*func)());
void click(){
func_();
private:
void (T::*func_)();
};
これは私が得るエラーです:
Button.h|23|error: must use '.*' or '->*' to call pointer-to-member function
in '((Button<MainMenuScene>*)this)->Button<MainMenuScene>::func_ (...)',
e.g. '(... ->* ((Button<MainMenuScene>*)this)->Button<MainMenuScene>::func_) (...)'|