Estoy tratando de borrar un puntero a un objeto, pero sigo rompiendo la consola (PS2), no obtengo ningún error debido a la forma en que está configurada la consola, entonces No estoy muy seguro de lo que está pasando.Borrando un puntero de un vector
He enumerado las dos líneas de ese error, esto no falló hasta que agregué estas líneas.
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);
}
}
¿Qué estoy haciendo mal?
Gracias.
EDITAR: Aclaración, acaba de tener esta línea.
listIter = m_downDirectionList.erase(listIter);
esto también los errores.
No sé lo que 'm_downDirectionList' es, en realidad, o lo que' releaseAProjectile' hace. Tampoco sé qué tipo de error, o sus técnicas de prueba, o si el error es consistente. –
Sobre la edición. Si te refieres a mi solución, hice más que simplemente agregar esa línea. También moví el incremento del iterador al bloque else. Iba a editar mi respuesta con una explicación después de publicar pero [Kos] (http://stackoverflow.com/questions/4305002/erasing-a-pointer-from-a-vector/4305045#4305045) ya explicaba el problema . –
Dupe of http://stackoverflow.com/questions/2728551/c-iterators-problem/2728567? – AshleysBrain