【发布时间】:2011-05-29 03:21:51
【问题描述】:
我收到此代码的错误:
for(std::vector<AguiTimedEvent*>::iterator it = timedEvents.begin();
it != timedEvents.end();)
{
if((*it)->expired())
{
(*it)->timedEventCallback();
delete (*it);
it = timedEvents.erase(it);
}
else
it++;
}
可能是什么问题?
定时事件有时会在其回调被调用时推送一个新事件,这可能会这样做
谢谢
【问题讨论】:
-
确切的错误文本是什么?
-
表达式:向量迭代器不可解引用(调试断言失败)
-
timedEventCallback或AguiTimedEvent的析构函数是否直接或间接修改timedEvents? -
定时事件有时会在调用其回调时推送一个新事件,这可能会这样做
-
如果您在迭代时修改集合(使用回调),则无法保证迭代器在之后仍然有效。那可能是你的问题。