我有一个动物类,并从这个特定的动物派生。我有一个名为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