2011-12-17 3 views

ответ

12

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

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

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

2

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

std::vector<Enemy*>::iterator it; 
for(it=tracked.begin();it!=tracked.end();it++){ 
    (*it)->update(timeSinceLastFrame); 
} 
Смежные вопросы