SFML и C++ Уроки \ Разработка игр › Форумы › SFML Graphics › урок 24. вопрос по удалению врага из списка. › Ответ в теме: урок 24. вопрос по удалению врага из списка.
В первом варианте не принципиально, что идет первым: it = entities.erase(it) или delete b, а вот втором принципиально. В момент it = entities.erase(it) происходят 2 операции – из списка вычеркивается элемент, и второе – текущий указатель присваивается следующему элементу списка.
Таким образом при
it = entities.erase(it); delete *it;
текущий указатель присваивается следующему элементу, а потом в delete *it ты удаляешь содежимое этого элемента – а на следующей итерации обращаешься по этой (уже несуществующей ссылке) в строчке (*it)->update(time);