表达式必须具有 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。
有人可以指出正确的方向吗?我收到上述错误。
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。