从矢量中删除指针

时间:2010-11-29 15:08:55

标签: c++ vector iterator

我正在尝试擦除指向对象的指针,但是我一直在崩溃控制台(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 个答案:

答案 0 :(得分:5)

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++
        }
    }

答案 1 :(得分:0)

  m_downDirectionList.erase (listIter);