我正在学习游戏教程而我遇到了问题,这是代码:
.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()
时,它可以正常工作。
答案 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。