'vector iterators incompatible'

'vector iterators incompatible'

本文关键字:incompatible vector iterators      更新时间:2023-10-16
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);
}