C ++左值作为一元'&'需要操作数

时间:2011-07-29 22:40:54

标签: c++

我正在研究游戏引擎并致力于实施州设计。我有一个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问题。

1 个答案:

答案 0 :(得分:8)

变化:

 GameState *state = new GameState(&this);

为:

GameState *state = new GameState(*this);

这是因为您通过引用将引擎传递给State类的构造函数。