IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SL & STL C++ Discussion :

Problème de fonction "const" avec une std::map


Sujet :

SL & STL C++

  1. #1
    Membre habitué
    Inscrit en
    Octobre 2004
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 616
    Points : 164
    Points
    164
    Par défaut Problème de fonction "const" avec une std::map
    Bonjour.

    j'ai une fonction menbre d'une classe dont le but est juste de renvoyé une string contenu dans une map ( en passant en paramètre a la fonction une clé de la map ).

    J'ai voulu rendre cette fonction const, car elle ne modifie pas ma classe.

    J'ai une erreur de compilation :
    C2678: '[' binaire*: aucun opérateur trouvé qui accepte un opérande de partie gauche de type 'const std::map<_Kty,_Ty>' (ou il n'existe pas de conversion acceptable)
    with
    [
    _Kty=std::string,
    _Ty=std::string
    ]
    Je comprend à peu près ce qu'il me dit mais pas comment régler le problème .
    ( c'est le dernier return qui plante, avec l'opérateur [] )

    Voila ma fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    std::string Settings::GetSettingByName(const std::string & SettingToGet) const
    { 
    	std::map <std::string, std::string>::const_iterator It = Settings_.find(SettingToGet);
     
    	if ( It == Settings_.end() )
    	{
    		Log(LOG_ALL,LOG_ERROR) << " Setting : " << SettingToGet << " not found in the SettingManager." ;
     
    		return "" ;
    	}
     
    	return Settings_[SettingToGet] ;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    // Our map of Setting <-> Value
    std::map <std::string, std::string> Settings_ ;

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Comme le message d'erreur l'indique, tu ne peux pas utiliser operator[] sur une map qui est const.
    De toutes manières ce serait bête puisque tu as déjà recherché ta clé. Il suffit de retourner *It.
    Boost ftw

  3. #3
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Il suffit de retourner *It
    It->second, plutôt

  4. #4
    Membre habitué
    Inscrit en
    Octobre 2004
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 616
    Points : 164
    Points
    164
    Par défaut
    Merci, j'avais noté

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 19/02/2010, 09h42
  2. Réponses: 6
    Dernier message: 03/04/2006, 09h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo