当我使用push_back()函数时程序崩溃

时间:2014-08-04 22:32:16

标签: c++

我正在学习游戏教程而我遇到了问题,这是代码:

.h文件中的

std::vector<GameObject*> m_gameObjects;
GameObject* a;
.cpp文件中的

GameObject* player = new Player;
m_gameObjects.push_back(player);
a=player;

代码的这一部分将指针player传递给更新屏幕的另一个函数,所以当我点击屏幕上的播放按钮时出现精灵

像这样

m_gameObjects[i]->update();

a->update();

问题是,当我使用m_gameObjects.push_back(player)程序崩溃时,当我删除此行并使用a->update()时,它可以正常工作。

1 个答案:

答案 0 :(得分:0)

我认为push_back将指向对象的指针移动到vector中,并用nullptr替换源代码。尝试使用标准智能指针重写它

<。>文件中的

#include <memory>

typedef std::shared_ptr<GameObject> GameObjectType;
std::vector<GameObjectType> m_gameObjects;
GameObjectType a;

在.cpp文件中

GameObjectType player(new Player);
m_gameObjects.push_back(player);
a=player;

您还可以使用make_shared()为不可靠的指针创建共享副本或std :: weak_ptr。