Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1558 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Pb erase d'une <list>

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Pb erase d'une <list>

n°1121938
manutudesc​end
Posté le 16-06-2005 à 14:23:04  profilanswer
 

Bonjour,  
j'ai créé une classe template qui utilise la classe <list>  
dans cette classe j'ai une méthode qui me permet de retirer un élément a partir de son rang
j'ai une liste d'element contenant 5 elements
 

Code :
  1. // Attributs
  2.    list<T*> _liste;
  3. // Méthode en question
  4. void retirerObjet(int numero){
  5.     typename std::list<T*>::iterator i = _liste.begin();
  6.     for(int n=numero; n > 0; n--) i++;
  7.     cout << "taille:" << _liste.size()<<"\n";                 // affiche: taille:5
  8.      //i = _list.erase (i);   
  9.     _liste.erase(i);
  10.     cout << "taille:" << _liste.size()<<"\n";                 // affich: taille:4
  11.   }


 
jusque la tout est normal sauf que quand j'appelle ma méthode à partir d'une autre classe

Code :
  1. cout <<"la taille avant:" << _monde->getListeP().tailleListe() <<"\n";              //affiche: "la taille avant:5"
  2.      _monde->getListeP().retirerObjet(2);
  3.      cout <<"la taille apres:" << _monde->getListeP().tailleListe() <<"\n";       // affiche: "la taille apres 5"

 
 
donc ma liste est modifié en local mais pas apres l'apel de ma méthode.
 
Merci à tous ceux qui pourront m'aider ;)


Message édité par manutudescend le 16-06-2005 à 14:23:36
mood
Publicité
Posté le 16-06-2005 à 14:23:04  profilanswer
 

n°1121955
Lam's
Profil: bas.
Posté le 16-06-2005 à 14:31:11  profilanswer
 

Laisse moi deviner: getListeP() ne renvoie pas une référence, mais un objet (construit par recopie) ?

n°1121957
manutudesc​end
Posté le 16-06-2005 à 14:33:19  profilanswer
 

voici la méthode :  
ListeObjets<Personnage> getListeP() { return _listeP; }

n°1121969
Lam's
Profil: bas.
Posté le 16-06-2005 à 14:42:07  profilanswer
 

Oui, donc à chaque appel de monde->getListeP().tailleListe() tu construit un nouvel objet ListeObjet (qui est une copie du _listeP dans la classe Monde).
 
Si tu veux que tous les appels portent toujours sur le même objet, il faut que tu retournes une référence dans getListeP().
 

n°1121973
manutudesc​end
Posté le 16-06-2005 à 14:44:31  profilanswer
 

Merci à toi, je vais essayer ;)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Pb erase d'une <list>

 

Sujets relatifs
scripts PHP pour la gestion d'une mailing list ?[ASP]Récupérer un champ dans une list déroulante
Ftp_*list sur serveur windows en PHP 5list box+feuille en fond d'écran
list box row sourceProbleme avec Collections.sort(List<T> list)
USERFORM- Comment gérer les valeurs de plusieurs Cbx_List.copier le contenu d'un list awt
List de List et ScrollbarRecherche script de mailing list evolué !
Plus de sujets relatifs à : Pb erase d'une <list>


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR