我目前使用vector.push_back()方法时遇到了分割错误(我认为是这个原因)。
以下是示例代码:
我有一个名为Zombie的类:
class Zombie
{
public:
Zombie();
~Zombie();
SDL_Surface* image;
SDL_Rect box;
bool dead;
protected:
private:
// gets random coordinates around the screen
SDL_Rect get_zombie_rect();
};
构造函数为:
Zombie::Zombie()
:
dead(false),
image(load_image("Player.png")),
box(get_zombie_rect())
{
}
Zombie有一个处理程序类来管理向量,并使用名为create_new_zombie()的函数。(这里出现了问题)
void Zombie_Manager::create_new_zombie()
{
Zombie newZombie;
zombies.push_back(newZombie);
}
这是向向量中添加元素的正确方式吗?
我能够使用指针得到一个可行的版本,但一定有更简单、更正确的方法来完成这个任务,对吗?
如果std::vector.push_back()浅复制其新元素,为什么会出现段错误?我在假设上有错吗?
image
是未初始化的垃圾数据。 - John Dibling