Bonjour à tous.
J'utilise un itérateur pour parcourir une liste (de la bibliothèque standard), avec une boucle for, de ce type
for(p1 = maListe.begin();p1 != maListe.end();p1++)
L'éxecutable plante (segmentation fault) en arrivant à cette boucle.
J'ai découvert en fait que p1 ne prenait jamais la valeur maListe.end(), et c'est donc l'action ++ qui fait planter en lui demandant de pointer vers quelque chose qui n'existe pas, car :
plante également, tandis que
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 while(p1 != maListe.end()) { p1++; }
Fonctionne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 int i =0; std::list<Ma_Classe>::iterator p1; while(i<maListe.size()) { i++; p1++; }
J'ai cherché sur Google, mais je n'ai pas trouvé de pages correspondant à mon problème.
Si vous avez une piste, je suis preneur.
Merci d'avance.
Partager