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

program crashes when i use push_back() function

本文关键字:函数 崩溃 程序 back push      更新时间:2023-10-16

我正在学习一个游戏教程,我遇到了一个问题,下面是代码:

std::vector<GameObject*> m_gameObjects;
GameObject* a;

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()时它工作

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

in .h file

#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来创建不可靠的指针。