Bonjour,
j'ai un problème de platage lors d'un parcour de vecteur. ça ne plante que pour le suivant alors que j'utilise la même logique que pour le précédent. Le message d'erreur est "iterator not dereferencable" lors de l'affichage, je suppose que c'est parce que je sors du vecteur.... Logiquement ça devrait pas vu que je test si l'iterateur est egal à la fin du vecteur.
.cpp
main:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 vector<Perso*>::iterator conteneurp::suivant() { if (ipb == dpperso.end()) cout<<"Dernier perso!"<<endl; else ipb++; return ipb; } vector<Perso*>::iterator conteneurp::precedent() { if (ipb == dpperso.begin()) cout<<"Premier perso!"<<endl; else ipb--; return ipb; }
Merci d'avance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 vector<Perso*>::iterator ipb; //iterator de travail case '4': system("cls"); ipb=cont.suivant(); (*ipb)->AfficherPerso(); break; case '5': system("cls"); ipb=cont.precedent(); (*ipb)->AfficherPerso(); break;








Répondre avec citation



), c'est définir des fonctions membres qui renvoient le résultat de tab.begin() et tab.end() (en version const et / non const selon le cas), et vérifier que l'itérateur que tu as obtenu différent du résultat renvoyé par cette fonction.

Partager