Ответ в теме: урок 24. вопрос по удалению врага из списка.

SFML и C++ Уроки \ Разработка игр Форумы SFML Graphics урок 24. вопрос по удалению врага из списка. Ответ в теме: урок 24. вопрос по удалению врага из списка.

#1264
+1
Mario
Mario
Модератор
Сообщений:5

Зарегистрирован:
21.04.2015

Репутация:3

В первом варианте не принципиально, что идет первым: it = entities.erase(it) или delete b, а вот втором принципиально. В момент it = entities.erase(it) происходят 2 операции – из списка вычеркивается элемент, и второе – текущий указатель присваивается следующему элементу списка.

Таким образом при
it = entities.erase(it); delete *it;
текущий указатель присваивается  следующему элементу, а потом в delete *it ты удаляешь  содежимое этого  элемента – а на следующей итерации обращаешься по этой (уже несуществующей ссылке) в строчке (*it)->update(time);