Стирание указателя из вектора - PullRequest
5 голосов
/ 29 ноября 2010

Я пытаюсь стереть указатель на объект, но продолжаю сбивать консоль (PS2), я не получаю никаких ошибок из-за того, как настроена консоль, поэтому я не совсем уверен, чтопродолжается.

Я перечислил две строки этой ошибки, это не было ошибкой, пока я не добавил эти строки.

    for(listIter = m_downDirectionList.begin(); listIter != m_downDirectionList.end(); listIter++)
    {
        Projectile* proj = dynamic_cast<Projectile*>(*listIter);

        if (proj->getZWorldCoord() >= (defaultLevelDepth + zOffset))
        {
            proj->getPoolOwner()->releaseAProjectile(proj);
            //(*listIter) = NULL; // THIS ERRORS, also tried = 0.
            //listIter = m_downDirectionList.erase(listIter); // THIS ALSO ERRORS
        }

        else
        {
            (*listIter)->update(camera, zOffset);
        }
    }

Что я делаю не так?

Спасибо.

РЕДАКТИРОВАТЬ: Уточнение, просто эта строка.

listIter = m_downDirectionList.erase(listIter);

это также ошибки.

Ответы [ 2 ]

5 голосов
/ 29 ноября 2010
for(listIter = m_downDirectionList.begin(); listIter != m_downDirectionList.end(); )
    {
        Projectile* proj = dynamic_cast<Projectile*>(*listIter);

        if (proj->getZWorldCoord() >= (defaultLevelDepth + zOffset))
        {
            proj->getPoolOwner()->releaseAProjectile(proj);
            listIter = m_downDirectionList.erase(listIter);
        }

        else
        { //m_downDirectionList[p]->update(camera, zOffset);
            (*listIter)->update(camera, zOffset);
            listIter++
        }
    }
0 голосов
/ 29 ноября 2010
  m_downDirectionList.erase (listIter);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...