【发布时间】:2011-12-17 20:54:22
【问题描述】:
std::vector<Enemy*>::iterator it;
for(it;it!=tracked.end();it++){
(*it)->update(timeSinceLastFrame);
}
tracked 是向量:
std::vector<Enemy*>
为什么会出现此错误? (如果我没有提供足够的细节,请说出来)
【问题讨论】:
std::vector<Enemy*>::iterator it;
for(it;it!=tracked.end();it++){
(*it)->update(timeSinceLastFrame);
}
tracked 是向量:
std::vector<Enemy*>
为什么会出现此错误? (如果我没有提供足够的细节,请说出来)
【问题讨论】:
你从未初始化过迭代器。
for(std::vector<Enemy*>::iterator it = tracked.begin();it!=tracked.end();it++){
(*it)->update(timeSinceLastFrame);
}
许多实现(例如您似乎正在使用的 VC++)在调试中执行检查,以确保在比较两个迭代器时,它们属于同一个对象。默认构造的迭代器不属于任何特定实例,因此it != tracked.end() 检查将因该错误而失败。
【讨论】:
你还没有初始化it。试试这个:
std::vector<Enemy*>::iterator it;
for(it=tracked.begin();it!=tracked.end();it++){
(*it)->update(timeSinceLastFrame);
}
【讨论】: