J'ai une classe avec un vecteur de pointeurs vers des objets. J'ai introduit quelques éléments sur ce vecteur, et sur mon fichier principal, j'ai réussi à les imprimer et à en ajouter d'autres sans aucun problème. Maintenant j'essaye de retirer un élément de ce vecteur et de vérifier si ce n'est pas NULL mais ça ne marche pas.Problème C++ avec des pointeurs sur des objets
Je le remplir avec de la classe Test:
Other *a = new Other(1,1);
Other *b = new Other(2,2);
Other *c = new Other(3,3);
v->push_back(a);
v->push_back(b);
v->push_back(c);
Et sur mon dossier principal je:
Test t;
(...)
Other *pointer = t.vect->at(0);
delete t.vect->at(0);
t.vect->erase(t.vect->begin());
if (pointer == NULL) { cout << "Nothing here.."; } // Never enters here..
vous suffit de définir le pointeur sur NULL juste après l'avoir supprimé. cela peut sembler redondant, mais ce n'est pas le cas. delete libère la mémoire, la définissant sur NULL, vérifie qu'elle a été supprimée. – zxcvbnm
@zxcvbnm: c'est une bonne pratique, mais ça ne marchera pas dans ce cas. Zibd a deux pointeurs pointant vers le même objet; en utilisant l'un d'entre eux pour supprimer l'objet, puis en le définissant sur NULL laisse toujours l'autre pointant vers la mémoire libérée. – Beta