gpt4 book ai didi

c++ - 如何从方法访问类成员?

转载 作者:行者123 更新时间:2023-11-28 08:00:04 25 4
gpt4 key购买 nike

我想从我的 eventReceiver 对象内部访问引擎。他们是游戏类的其他成员,但我如何才能达到它?

// game.h
class game
{
public:
game();
3dEngine* engine;
eventReceiver* receiver;
};

// eventReceiver.h
class eventReceiver
{
public:
eventReceiver () {}
virtual bool OnEvent (const SEvent& event)
{
...
case QUIT_BUTTON_PRESSED:
>>> engine->quit(); // how to access engine from here??
return true;
...
}
};

我应该使用“this”吗?我不明白为什么接收器看不到引擎。

最佳答案

将类实现为 Singleton并为 engine 属性编写一个 getter。访问代码可能如下所示:

game::getInstance()->getEngine()->quit();

不过,我建议您在游戏类本身中创建一个 quite() 方法,以隐藏实现细节并允许您处理整个应用程序关闭,而不仅仅是 3dEngine:

game::getInstance()->quit();

如果您不想将 game 类实现为单例,您还可以将 game 对象的引用/指针传递给事件处理程序的构造函数:

class CloseButtonHandler : public eventHandler {
game& game;

public:

CloseButtonHandler(game& game) : game(game) {
}

virtual bool OnEvent(const SEvent& event){
...
game.getEngine()->quit();
}
}

关于c++ - 如何从方法访问类成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11713282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com