私には2つのクラスがButton
ありGame
ます。GameクラスにはButton *タイプのメンバーが含まれ、ButtonクラスにはGameクラスのメンバー関数へのポインターが含まれます。
class Game{
public:
Button* button1;
void init();
void tick();
void wantetEvent();
};
class Button{
public:
void (Game::*click)();
};
Gameclick
のinit
関数で関数ポインタを定義します。
void Game::init(){
button1 = new Button;
button1->click = &Game::wantetEvent;
}
でtick
機能私は呼びたいclick
の機能をbutton1
。これが私がこれまでに試したことです:
void Game::tick(){
(button1->*click)();
(button1->*Game::click)();
}
私が試したものは他にもたくさんありますが、それらはこれらの例よりも有望ではありませんでした。問題は、コンパイラ'click' was not declared in this scope
が最初の例と'click' is not a member of 'Game'
2番目の例でそれを教えてくれることです。ポインターの観点から、別のクラスにある関数にアクセスしようとしている問題はありますか?または、そのような方法で関数を呼び出すことができる解決策はありますか?
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加