Petite question sur la stl et les pointeurs.

Petite question sur la stl et les pointeurs. - C++ - Programmation

Marsh Posté le 16-02-2008 à 17:23:49    

Bonjour,  
 
J'ai un petit problème de synthaxe qui me bloque depuis plusieurs heures.
 
J'utilisais une liste de la stl du type: typedef std::list<monObjet> ListmonObjet;
 
monObjet contenant un attribut "id_".
 
et je pouvais y accèder de la manière suivante:  
ListmonObjet L;
L.end()->id_; //le end() c'est juste pour l'exemple
 
Pour certaines raisons j'ai du changer mon type de liste en typedef std::list<monObjet*> ListmonObjet;
 
Et depuis impossible de trouver la synthaxe qui me permettrait d'accèder à mon attribut "id_", j'ai beau avoir plus ou moins tout essayé  :cry:  
 
Remarque: ma liste est dans un autre objet.
 
Merci d'avance à celui qui me sortira de ce pépin.

Reply

Marsh Posté le 16-02-2008 à 17:23:49   

Reply

Marsh Posté le 16-02-2008 à 18:18:15    

Salut,
 
Tu peux faire ainsi normalement:

Code :
  1. typedef std::list<monObjet*> ListmonObjet;
  2. ListmonObjet objList;
  3. // Ajout de quelques éléments...
  4. if(objList.size() > 0 && (*objList.begin()) != 0)
  5.    (*objList.begin())->id_;


Par contre, n'oublie pas que l'itérateur renvoyé par end() est toujours invalide, donc ton exemple serait mieux en utilisant begin().
 
Le principe est que pour accéder à l'objet pointé/contenu par un itérateur, il faut le déréférencer, d'où le (*objList.begin()), ensuite comme cet objet est un pointeur, tu utilises -> pour avoir accès à ses membres


Message édité par IrmatDen le 16-02-2008 à 18:18:31
Reply

Marsh Posté le 16-02-2008 à 19:07:23    

Merci beaucoup ça marche :)
 
Le pire c'est que j'étais sur d'avoir essayé cette synthaxe, maintenant ça devrait aller comme sur des roulettes \o/

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed