如何从另一个 class 调用指向成员函数的指针?

How do I call pointer-to-member functions from another class?

我有两个 class,ButtonGame。 Game class 包含 Button* 类型的成员,Button class 包含指向 Game class.

中成员函数的指针
class Game{
    public:
        Button* button1;

        void init();
        void tick();

        void wantetEvent();
};

class Button{
    public:
        void (Game::*click)();
};

我现在在Game的init函数中定义了click函数指针

void Game::init(){
    button1 = new Button;
    button1->click = &Game::wantetEvent;
}

tick函数中我想调用button1click函数。到目前为止,这是我尝试过的方法:

void Game::tick(){
    (button1->*click)();
    (button1->*Game::click)();
}

我尝试了很多其他的东西,但它们没有这些例子那么有前途。 问题是编译器告诉我第一个示例中的 'click' was not declared in this scope 和第二个示例中的 'click' is not a member of 'Game'。问题是我试图访问一个函数——从指针的角度来看——在另一个 class 中吗?或者是否有一些解决方案可以让我以这种方式调用函数?

您需要一个实例来调用它:

void Game::tick(){
    (this->*(button1->click))();
}

Demo