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

  FORUM HardWare.fr
  Programmation
  C++

  [C++] Parcours dans un Set

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] Parcours dans un Set

n°2064894
Knarf64
Posté le 20-03-2011 à 16:40:51  profilanswer
 

Salut à tous,
 
j'ai un problème de parcours dans un set :
 

Code :
  1. Operateur ZoneRepos::getOperateurQualifie(Qualification q)
  2. {
  3.     set<Operateur>::iterator it = this->operateurs.begin() ;
  4.     for (it ; it != this->operateurs.end() ; it ++)
  5.     {
  6.         if(it->isQualifie(q)) return *it ;
  7.     }
  8.     return NULL ;
  9. }


 
la methode d'Operateur concernée :
 

Code :
  1. bool Operateur::isQualifie(Qualification q)
  2. {
  3.     list<Qualification>::iterator it = this->qualifications.begin() ;
  4.     for (it; it != this->qualifications.end() ; it ++)
  5.     {
  6.         if (*it == q) return true ;
  7.         return false ;
  8.     }
  9. }


 
Et voici mon erreur qui est sensé être sur cette ligne :

Code :
  1. if(it->isQualifie(q)) return *it ;


 
|error: passing 'const Operateur' as 'this' argument of 'bool Operateur::isQualifie(Qualification)' discards qualifiers
 
Si vous avez la solution.
Merci d'avance


Message édité par Knarf64 le 20-03-2011 à 16:42:51
mood
Publicité
Posté le 20-03-2011 à 16:40:51  profilanswer
 

n°2064909
mr simon
Posté le 20-03-2011 à 18:36:06  profilanswer
 

Cela ne fonctionne pas car l'opérateur '->' te renvoie une référence constante, hors ta méthode isQualifie ne l'est pas.
 
C'est une bonne habitude en C++ de déclarer les méthodes constantes (cela t'oblige aussi à utiliser des 'const_iterator' au lieu des 'iterator'.
 
Autre remarque, quand tu passes en argument tes objets, utilise des références constantes (const Qualification& ). Cela évitera des copies inutiles.


Message édité par mr simon le 20-03-2011 à 18:36:44
n°2064920
Knarf64
Posté le 20-03-2011 à 19:59:19  profilanswer
 

Effectivement c'etait bien cela.  Cependant, si l'operateur -> renvoit un const c'est parceque la source ( la variable qui precede -> ) est un itérateur je présume ?  
 
Concernant les références, je nettoierai tout cela a la fin pour eviter les copies.


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

  [C++] Parcours dans un Set

 

Sujets relatifs
Fonction round() en C ansi[C] Traitement d'une trame GPS
Programmation Java/C sous Linux/Windows^^Application ASP.NET MVC (C#) - Routing/URL
[C] Typedef et #includeProblème NetworkStream C#
[ C#] Initialisation attributC++ FILE SOURCE NOT COMPILED
lien api windows en langage C 
Plus de sujets relatifs à : [C++] Parcours dans un Set


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