【发布时间】:2011-07-29 22:40:54
【问题描述】:
我正在开发游戏引擎并致力于实现状态设计。我有一个 Engine 类,它负责一切的所有初始化,并包含调用活动状态的更新、渲染和处理输入函数的游戏循环。
我所有不同的状态都继承自 State,它需要在其构造函数中引用 Engine 类,以便初始化引擎的受保护引用以供将来使用。以下是相关代码:
// file: state.h
class Engine;
class State {
public:
State(Engine &engine) : mEngine(engine) { }
protected:
Engine &mEngine;
};
// file: gamestate.h
class GameState : public State {
public:
GameState(Engine &engine) : State(engine) {}
};
最后在初始化器的engine.cpp中,我创建了一个新的GameState对象,这是报告错误的地方。
GameState *state = new GameState(&this);
我现在正在使用 Linux 上的 Qt Creator 在 C++ 中对其进行编码,目前无法访问 Windows 机器来查看 gcc 是否存在问题。
【问题讨论】:
-
为什么不用外部全局指针而不是成员指针?
-
@Shaktal 不,不可能选择引擎。注射是个好东西。而全局变量肯定是一件坏事。事实上
state甚至不应该是引擎的成员。此外,C++ 是一种现代语言。不要再在不需要的地方搞乱指针了!为什么不简单地Engine engine; GameState state(engine)?
标签: c++