Удаление из листа

В этой теме 4 ответа, 3 участника, последнее обновление  tobidashi 6 мес., 3 нед. назад.

Просмотр 5 сообщений - с 1 по 5 (из 5 всего)
  • Автор
    Сообщения
  • #4636

    spoty76
    Участник
    Сообщений:17

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

    Репутация:2

    Вообщем такая проблема, враг когда умирает (life == false) он не удаляется, остается на карте и продолжает двигаться, (притом команды срабатывают, мой герой все время прыгает вверх, касаясь врага), вот итератор и лист:

    Вот логика:

     

    Вот рисование врага:

    Пытался менять разными способами, тоесть делать типо если жизнь равна нулю то удаляем, менял команды удаления местами: результат один и тот же, жизнь врага false, но он остается и не удаляется

    Вот весь код main.cpp:

     

    #4637

    KindRedSand
    Участник
    Сообщений:80

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

    Репутация:29

    Собственно, что вы пытались данной конструкцией донести до машины? Что бы создавался новый обьект на месте старого с полной копией его параметров?
    iter1 даже после enemyArray.erase(iter1) будет сохранять ссылку на ОБЪЕКТ, при этом ссылка из листа будет удалена. Убери лишнее приведение и обьект будет успешно удалён.

     

    #4638

    spoty76
    Участник
    Сообщений:17

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

    Репутация:2

    Крч, я сделал как ты сказал:

    Ничего не изменилось, враг все еще на карте при убийстве

    #4639

    KindRedSand
    Участник
    Сообщений:80

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

    Репутация:29

    При помощи дебага проверь попадает ли вобще код в
    <div id=”crayon-591320f37a462315167078-4″ class=”crayon-line crayon-striped-line”><span class=”crayon-st”>if</span> <span class=”crayon-sy”>(</span><span class=”crayon-sy”>(</span><span class=”crayon-o”>*</span><span class=”crayon-v”>iter1</span><span class=”crayon-sy”>)</span><span class=”crayon-o”>-></span><span class=”crayon-v”>life</span> <span class=”crayon-o”>==</span> <span class=”crayon-t”>false</span><span class=”crayon-sy”>)</span></div>
    <div id=”crayon-591320f37a462315167078-5″ class=”crayon-line”><span class=”crayon-sy”>{</span></div>
    <div id=”crayon-591320f37a462315167078-6″ class=”crayon-line crayon-striped-line”><span class=”crayon-v”>enemyArray</span><span class=”crayon-sy”>.</span><span class=”crayon-e”>erase</span><span class=”crayon-sy”>(</span><span class=”crayon-v”>iter1</span><span class=”crayon-sy”>)</span><span class=”crayon-sy”>;//Ставь точку дебага здесь и убей противника</span></div>
    <div id=”crayon-591320f37a462315167078-7″ class=”crayon-line”><span class=”crayon-e”>delete</span> <span class=”crayon-sy”>(</span><span class=”crayon-o”>*</span><span class=”crayon-v”>iter1</span><span class=”crayon-sy”>)</span><span class=”crayon-sy”>;</span></div>
    <div id=”crayon-591320f37a462315167078-8″ class=”crayon-line crayon-striped-line”><span class=”crayon-v”>iter1</span><span class=”crayon-o”>++</span><span class=”crayon-sy”>;</span></div>
    <div id=”crayon-591320f37a462315167078-9″ class=”crayon-line”><span class=”crayon-sy”>}</span></div>

    #4652

    tobidashi
    Участник
    Сообщений:16

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

    Репутация:7

    spoty76, вопрос ещё актуален? Я вроде сталкивался с похожей проблемой.

Просмотр 5 сообщений - с 1 по 5 (из 5 всего)

Для ответа в этой теме необходимо авторизоваться.