De la difficulté de la suppression de vecteur de pointeurs

J'ai un gestionnaire de classe de la tenue d'un vecteur de pointeurs vers une classe de base virtuelle pour permettre une variété de classes enfant pour y être stockées. Dans le destructeur de ce gestionnaire de classe, je le veux pour faire défiler tous les pointeurs qu'il détient et de les supprimer. Cependant, j'ai essayé un certain nombre de méthodes que j'ai rencontré et le programme plante lors de l'exécution.

L'actuel code que j'ai est indiqué ci-dessous:-

for (std::vector<GameState*>::iterator it = gamestates_.begin(); it != gamestates_.end(); ++it){
    delete *it;
    it = gamestates_.erase(it);
}

Une chose que je n'ai pas encore essayé est à l'aide de unique_ptr, mais je suis sûr que ce doit être capable de les gérer sans les utiliser. S'il vous plaît corrigez-moi si je me trompe.

Edit: je suis conscient que je devrais effacer le vecteur après la boucle, mais c'est ce que j'ai après avoir essayé chaque méthode normale de supprimer les pointeurs. Il ne semble pas aimer la commande supprimer.

OriginalL'auteur James Richmond | 2013-09-02