Вы никогда не инициализировали итератор.
for(std::vector<Enemy*>::iterator it = tracked.begin();it!=tracked.end();it++){
(*it)->update(timeSinceLastFrame);
}
Многие реализации (такие как VC ++, который вы, похоже, используете) выполняют проверки в отладке, чтобы убедиться, что при сравнении двух итераторов они принадлежаттот же объект.Созданный по умолчанию итератор не принадлежит ни одному конкретному экземпляру, и поэтому проверка it != tracked.end()
завершится неудачей с этой ошибкой.