用vector自带的eraseObject完了后报错

红圈death就是出问题的地方, 图1
在death内调用了case 0: eraseObject(this); 图2
跑完这次循环后回到红线部分开始++iterator的时候报错;图1
报错如图3

图1


图2

图3

遍历的时候,不能删除迭代器,或者你删除后移动一下迭代器的位置

vector vecFiles;
vector::iterator it_pos;
//@todo 已下载文件过滤
for (it_pos = vecFiles.begin(); it_pos != vecFiles.end(); ) {
string strTmp = *it_pos;
if( objDownHis.checkHisList( strTmp.c_str() ) ){ //判断是否已下载过, 已下载则从列表删除
g_Log << TIME << “file:[” << *it_pos << "] found "<< END; //
it_pos = vecFiles.erase(it_pos);
}else
it_pos++;
}

这个是遍历删除的例子这里是重点【it_pos = vecFiles.erase(it_pos);】

这个是经典的笔试题。。。

解决了,这各earseObj没有返回值…