我正在使用我當前的vector.push_back()方法獲得分段錯誤(我認爲)。用戶定義類型正確使用std :: 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())
{
}
和殭屍有一個處理程序類來管理矢量一個名爲create_new_zombie()的函數。 (這裏的問題)
void Zombie_Manager::create_new_zombie()
{
Zombie newZombie;
zombies.push_back(newZombie);
}
這是正確的方式將元素添加到載體?
我能夠使用指針獲得工作版本,但必須有更簡單更正確的方式來完成此操作,對嗎?
如果std :: vector.push_back()淺拷貝它的新元素,爲什麼會出現seg錯誤?假設我錯了嗎?
我希望你認識到'image'是未初始化的垃圾。 –
如何實現複製構造函數:http://en.wikipedia.org/wiki/Copy_constructor – 2012-06-04 20:09:48
可能重複[什麼是三條規則?](http://stackoverflow.com/questions/4172722/what-is -the-rule-of-three) – fredoverflow