当我使用push_back()函数时,程序崩溃
program crashes when i use push_back() function
我正在学习一个游戏教程,我遇到了一个问题,下面是代码:
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来创建不可靠的指针。
相关文章:
- 内联映射初始化的动态atexit析构函数崩溃
- C++设置器函数崩溃
- 在C++中删除指针数组时析构函数崩溃
- 使用向量的函数崩溃,调试器说访问冲突读取位置
- 分配内存并在回调时调用C++的 Rust 函数崩溃
- MEX文件实现特征库伪内函数崩溃
- C :复制构造函数崩溃
- 创建'new'实例可以解决析构函数崩溃问题?
- wglCreateContextAttribsARB函数崩溃
- OpenCV 均值函数崩溃,掩码从 OpenCV 阈值函数创建
- 使用Armadillo类型的lambda函数崩溃的未知原因
- 空析构函数崩溃程序:C++
- avformat_open_input函数崩溃
- boost::任何析构函数崩溃
- VS CTP 14的std::线程析构函数崩溃
- 使用std::enable_shared_from_this时,析构函数崩溃
- C++继承虚拟函数崩溃
- 分配空终止符时Windows剪贴板函数崩溃
- 从函数崩溃返回,仅在代码中的某个点之后
- 模板函数崩溃