如何从另一个 class 调用指向成员函数的指针?
How do I call pointer-to-member functions from another class?
我有两个 class,Button
和 Game
。
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
函数中我想调用button1
的click
函数。到目前为止,这是我尝试过的方法:
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))();
}
我有两个 class,Button
和 Game
。
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
函数中我想调用button1
的click
函数。到目前为止,这是我尝试过的方法:
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))();
}