【发布时间】:2018-03-09 22:21:08
【问题描述】:
我有两个班级,Button 和 Game。
Game 类包含 Button* 类型的成员,而 Button 类包含指向 Game 类中成员函数的指针。
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'。从指针的角度来看,我试图访问另一个类中的函数是否存在问题?还是有一些解决方案可以让我以这种方式调用函数?
【问题讨论】:
-
似乎 (button1->*click)() 必须工作。我在这里看了例子。 en.cppreference.com/w/cpp/language/…
-
应该是
(this->*(button1->click))()。(button1->*click)()仅在click是Game::init范围内的名称时才有意义,但不是。 -
提示:“来自另一个班级”与您的问题完全无关。
-
@АндрейМоскаленко 只是它没有
标签: c++ class function-pointers member-function-pointers