我的" Level"中有GameObject*
的向量类。
vector<GameObject*> gameObjects;
我像这样向Vector添加一个对象:
gameObjects.push_back(new Laser(10, 30));
其中Laser
是GameObject
的子类。然后我像这样循环遍历它们:
void Level::update()
{
for(vector<GameObject*>::const_iterator i = gameObjects.begin(); i != gameObjects.end(); ++i) {
(*i)->update();
}
}
其中void update()
是类GameObject
的成员函数。现在,我可能会更新一个对象,比如&#34; gun&#34;,它会在其进程中创建另一个对象,例如&#34; bullet&#34;,就像这样:
level.gameObjects.push_back(new Bullet(position, rotation));
其中level
是&#34; Level&#34;的一个实例。类。这行代码只能找到,但在#34; frame&#34;的末尾,当level.update()
完成循环现有的GameObject
时,它会崩溃。这在它退出for循环之前发生。
为什么会崩溃?如何解决这个问题呢?
答案 0 :(得分:1)
如果新的size超过capacity,则可能需要重新分配向量向量中添加新项目。发生这种情况时,迭代器为invalidated。
潜在的解决方案: