'矢量迭代器不兼容'

时间:2011-12-17 20:54:23

标签: c++ vector iterator std

std::vector<Enemy*>::iterator it;
for(it;it!=tracked.end();it++){
    (*it)->update(timeSinceLastFrame);
}

tracked是向量:

std::vector<Enemy*>

为什么我收到此错误? (如果我没有提供足够的细节,请说明)

2 个答案:

答案 0 :(得分:12)

你从未初始化迭代器。

for(std::vector<Enemy*>::iterator it = tracked.begin();it!=tracked.end();it++){
    (*it)->update(timeSinceLastFrame);
}

许多实现(例如VC ++,您似乎正在使用)在调试中执行检查,以确保在比较两个迭代器时,它们属于同一个对象。默认构造的迭代器不属于任何特定实例,因此it != tracked.end()检查将失败并显示该错误。

答案 1 :(得分:2)

您尚未初始化it。试试这个:

std::vector<Enemy*>::iterator it;
for(it=tracked.begin();it!=tracked.end();it++){
    (*it)->update(timeSinceLastFrame);
}