SFML и C++ Уроки \ Разработка игр › Форумы › SFML Graphics › Удаление из листа › Ответ в теме: Удаление из листа
C++
1 2 3 4 5 6 7 8 9 10 |
for (iter1 = enemyArray.begin(); iter1 != enemyArray.end();) { (*iter1)->update(time); if ((*iter1)->life == false) { iter1 = enemyArray.erase(iter1); delete (*iter1); } else { iter1++; } } |
Собственно, что вы пытались данной конструкцией донести до машины? Что бы создавался новый обьект на месте старого с полной копией его параметров?
iter1 даже после enemyArray.erase(iter1) будет сохранять ссылку на ОБЪЕКТ, при этом ссылка из листа будет удалена. Убери лишнее приведение и обьект будет успешно удалён.
C++
1 2 3 4 5 6 7 8 9 10 11 |
for (iter1 = enemyArray.begin(); iter1 != enemyArray.end();) { (*iter1)->update(time); if ((*iter1)->life == false) { /*iter1 = */enemyArray.erase(iter1); delete (*iter1); iter1++;//Мы работаем с сылкой на обьект в листе, а не индексом в векторе } else { iter1++; } } |