表达式必须具有 class 类型。 - class 个对象的向量

Expression must have class type. - Vector of class objects

有人可以指出正确的方向吗?我收到上述错误。

std::vector of class 在游戏引擎中声明的状态 class.

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);
   .....
}

"Error 3 error C2228: left of '.push_back' must have class/struct/union"

提前致谢。

由于您正在创建一个指针,因此您需要在将任何内容推回向量之前取消引用它。

(*m_states).push_back (state);

或者简单地说:

m_states->push_back (state);

您已将 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