【发布时间】:2012-06-04 20:04:17
【问题描述】:
我使用当前的 vector.push_back() 方法遇到了分段错误(我认为)。
下面是一些示例代码:
所以我有我的班级僵尸
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() 浅拷贝其新元素,为什么会出现 seg 错误?我的假设错了吗?
【问题讨论】:
-
我希望你意识到
image是未初始化的垃圾。 -
如何实现复制构造函数:en.wikipedia.org/wiki/Copy_constructor
-
我不认为另一个问题的答案所回答的每个问题都是重复的,是吗?
-
@Chris :我认为这是另一个问题是常见问题解答的时候。