有人能指出我正确的方向吗?我收到了上述错误。
std ::在游戏引擎类中声明的类州的向量。
class GameEngine
{....
private:
std::vector<State> *m_states;
}
在构造函数中:
m_states = new std::vector<State>;
添加状态功能
void GameEngine::AddState(State *state, bool change)
{
m_states.push_back (state);
.....
}
“错误3错误C2228:'。push_back'的左边必须有class / struct / union”
提前致谢。
答案 0 :(得分:1)
您已将m_states声明为指针...
...
private:
std::vector<State> *m_states;
...
所以,你必须将它用作指针。
写m_states->push_back
而不是m_states.push_back
。
另一方面,我可以看到您的代码中有另一个错误:
您的GameEngine::AddState(State *state, bool change)
函数收到State *
作为第一个参数,但您的m_states
成员是State
个对象的向量而不是指针。您必须将声明更改为:
std::vector<States *> *m_states;
建议:尽量避免在C ++中使用指针(*),而是使用 smart_pointers 。
答案 1 :(得分:0)
由于您正在创建指针,因此需要在将任何内容推回到向量之前取消引用它。
(*m_states).push_back (state);
或者简单地说:
m_states->push_back (state);