我正在研究游戏引擎并致力于实施州设计。我有一个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问题。
答案 0 :(得分:8)
变化:
GameState *state = new GameState(&this);
为:
GameState *state = new GameState(*this);
这是因为您通过引用将引擎传递给State类的构造函数。