C++ 如何从另一个类调用指向成员函数的指针?
我有两门课,C++ 如何从另一个类调用指向成员函数的指针?,c++,class,function-pointers,member-function-pointers,C++,Class,Function Pointers,Member Function Pointers,我有两门课,按钮和游戏。 游戏类包含Button*类型的成员,Button类包含指向游戏类中成员函数的指针 class Game{ public: Button* button1; void init(); void tick(); void wantetEvent(); }; class Button{ public: void (Game::*click)(); }; 我现在在游戏的ini
按钮
和游戏
。
游戏类包含Button*类型的成员,Button类包含指向游戏类中成员函数的指针
class Game{
public:
Button* button1;
void init();
void tick();
void wantetEvent();
};
class Button{
public:
void (Game::*click)();
};
我现在在游戏的init
函数中定义click
函数指针
void Game::init(){
button1 = new Button;
button1->click = &Game::wantetEvent;
}
在勾选
函数中,我想调用点击按钮1的函数。以下是我迄今为止所尝试的:
void Game::tick(){
(button1->*click)();
(button1->*Game::click)();
}
我还尝试了很多其他的方法,但是没有这些例子那么有希望。
问题是编译器告诉我,在第一个示例中,'click'未在此范围内声明,在第二个示例中,'click'不是“游戏”
的成员。从指针的角度来看,我试图访问另一个类中的函数是否存在问题?或者是否有某种解决方案允许我以这种方式调用函数?您需要一个实例来调用它:
void Game::tick(){
(this->*(button1->click))();
}
您需要一个实例来调用它:
void Game::tick(){
(this->*(button1->click))();
}
似乎(按钮1->*点击)必须工作。我在这里看了一个例子。应该是(此->*(按钮1->单击))()
<代码>(按钮1->*点击)(
只有当点击
是游戏::init
范围内的名称时才有意义,但它不是。提示:“来自另一个类”与您的问题完全无关。@Аааааааааааааааааа。我在这里看了一个例子。应该是(此->*(按钮1->单击))()
<代码>(按钮1->*点击)(
只有当点击
是游戏::初始化
范围内的一个名称时才有意义,但它不是。提示:“来自另一个类”与您的问题完全无关。@Аааааааааааааааа1072?意思是,当单击不在范围内时,您可以添加一些文字说明原因吗?意思是说,单击时
不在范围内?