我有一個動物類,並從這個特定的動物派生。我有一個名爲mItems的動物列表。我想看看我的獅子是否餓了。我在動物類創建的虛擬功能:神祕的Seg。故障
virtual void IsLion() {return false;}
virtual void IsHungry() {return false;}
virtual void SetHungry(bool state) {}
在我的獅級我已經擴展了這些:
virtual void IsLion() {return true;}
virtual void IsHungry() {return mHungry;}
virtual void SetHungry() {mHungry = state;}
mHungry是一個布爾成員變量將代表獅子是否是餓了。
void CSafari::KillHungryLion()
{
for(list<CAnimals *>::iterator i=mItems.begin();
i != mAnimals.end(); i++)
{
if((*i)->IsLion())
{
if((*i)->IsHungry())
{
mItems.remove(*i);
delete *i;
}
}
}
}
mItems是指向CAnimal對象的指針列表。
如果獅子餓了,他就死了!我遇到的問題是無盡的段錯誤。我無法確定我出錯的地方。我有一個基本上相當於這個功能的功能,定期更新獅子餓,然後我稱之爲。看起來,當我嘗試從項目中刪除項目時,它會出現段錯誤。有任何想法嗎?
用-g編譯並通過調試器運行。 – Sinkingpoint
你返回void函數? – billz
刪除您正在迭代的集合中的項是一個危險的遊戲 – bengoesboom