我在列表中保存了一些对象,例如这个:
list<CWorm*> wormList;
我把蠕虫放在这个列表中,在它们的构造函数中:
CWorm::CWorm(list<CWorm*>& list, [...]) {
list.push_back(this);
在主循环中,我为它们执行了一些事件,如下所示:
for(itt = wormList.begin(); itt != wormList.end(); itt++) {
if( (*itt) != NULL ) (*itt)->someEventBlabla();
}
我的问题是:如何有效地将它们从列表中删除。当它们死亡时,我试图从列表中“擦除”它们(在主循环中,在检查变量之后),但它给出了不可引用迭代器的错误。当我尝试从列表中“删除”它们(在对象中,在主循环执行的事件中)时,这一行中会出现一个错误:
if( (*itt) != NULL ) (*itt)->someEventBlabla();
我试图像这样删除它们:
wormList.remove(this)
来自一个对象事件,wormList 声明为 extern。
如何删除它们,为下一个对象留下空白空间?