我有一个 Animals 类,并从这个特定的动物派生出来。我有一个名为 mItems 的动物列表。我想看看我的狮子是否饿了。我在我的 Animals 类中创建了虚函数:
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 对象的指针列表。
如果狮子饿了,他就死定了!我遇到的问题是无休止的段错误。我无法确定我哪里出错了。我有一个基本上相当于这个的函数,它会定期更新狮子饿了,然后我称之为。当我尝试从 mItems 中删除项目时,它似乎出现了段错误。有任何想法吗?