«несовместимые векторные итераторы» - PullRequest
3 голосов
/ 18 декабря 2011
std::vector<Enemy*>::iterator it;
for(it;it!=tracked.end();it++){
    (*it)->update(timeSinceLastFrame);
}

tracked - это вектор:

std::vector<Enemy*>

Почему я получаю эту ошибку?(скажите, пожалуйста, если я не включил достаточно подробностей)

Ответы [ 2 ]

12 голосов
/ 18 декабря 2011

Вы никогда не инициализировали итератор.

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

Многие реализации (такие как VC ++, который вы, похоже, используете) выполняют проверки в отладке, чтобы убедиться, что при сравнении двух итераторов они принадлежаттот же объект.Созданный по умолчанию итератор не принадлежит ни одному конкретному экземпляру, и поэтому проверка it != tracked.end() завершится неудачей с этой ошибкой.

2 голосов
/ 18 декабря 2011

Вы не инициализировали it. Попробуйте это:

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