J'essaye d'effacer un pointeur sur un objet, mais je continue à écraser la console (PS2), je ne reçois aucune erreur à cause de la façon dont la console est configurée, donc je Je ne suis pas tout à fait sûr de ce qui se passe.Effacement d'un pointeur d'un vecteur
J'ai énuméré les deux lignes d'erreur, cela n'a pas d'erreur jusqu'à ce que j'ai ajouté ces lignes.
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'est-ce que je fais mal?
Merci.
EDIT: Clarification, ayant juste cette ligne.
listIter = m_downDirectionList.erase(listIter);
cela aussi des erreurs.
Je ne sais pas ce que 'm_downDirectionList' est, vraiment, ou ce' releaseAProjectile' fait. Je ne sais pas non plus quel type d'erreur ou vos techniques de test ou si l'erreur est cohérente. –
A propos de la modification. Si vous faites référence à ma solution, j'ai fait plus que simplement ajouter cette ligne. J'ai également déplacé l'incrément d'itérateur vers le bloc else. J'allais éditer ma réponse avec une explication après que j'ai posté mais [Kos] (http://stackoverflow.com/questions/4305002/erasing-a-pointer-from-a-vector/4305045#4305045) déjà expliqué le problème . –
Dupe de http://stackoverflow.com/questions/2728551/c-iterators-problem/2728567? – AshleysBrain