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

C++ Discussion :

problème avec une map


Sujet :

C++

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 298
    Points : 886
    Points
    886
    Par défaut problème avec une map
    Bonjour, j'ai la fonction suivante :

    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
     
    //____________________________________________________________________________________________
    bool Toto::calcul(const string & loi, const map<string,vector<double> > & param,double & sortie)
    {
    	if( (loi == "loi1") || (loi == "loi2") )
    	{
    		vector<double> p = param[loi]; // parametres de la loi "loi"  CA PLANTE ICI
     
    		if(p.size() != 7)
    			return false;
     
                    sortie = p[0] + param["titi"][1];
     
    		return true;
    	}
     
    	return false;
    }
    j'ai l'erreur suivante :

    error C2678: binary '[' : no operator found which takes a left-hand operand of type 'const std::map<_Kty,_Ty>' (or there is no acceptable conversion)
    Savez-vous pourquoi ? Je n'en ai vraiment aucune idée...

    Merci d'avance

  2. #2
    Membre expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Points : 3 284
    Points
    3 284
    Par défaut
    Salut

    dans ta méthode tu déclare le paramètre map comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     const map<string,vector<double> > & param
    le problème c'est que l'operateur [] n'est pas déclaré comme un method const sur le type map.

    http://www.cplusplus.com/reference/s...perator%5B%5D/
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    T& operator[] ( const key_type& x );
    il n'est donc pas utilisable dans ta méthode.

    Quelques liens utiles:
    http://duramecho.com/ComputerInforma...wCppConst.html
    http://cpp.developpez.com/faq/cpp/?p...S_const_member
    http://cpp.developpez.com/faq/cpp/?p...RS_immuabilite
    bazar: http://www.improetcompagnie.com/publ...ctacles-6.html

    BÉPO la disposition de clavier francophone, ergonomique et libre: http://bepo.fr/wiki/Accueil

    Emacs Wiki: http://www.emacswiki.org/

    En attente de ce que produira: http://www.pushmid.com

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 298
    Points : 886
    Points
    886
    Par défaut
    OK, merci pour ta réponse. C'est un peu dommage...

    A la place de ma map, j'ai mis 2 std::vector, mais bon, je trouve que c'est laid...

  4. #4
    Membre expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Points : 3 284
    Points
    3 284
    Par défaut
    tu pouvais simplement retirer le const dans la déclaration de ta fonction aussi.

    en remplaçant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    bool Toto::calcul(const string & loi, const map<string,vector<double> > & param,double & sortie)
    {/*...*/}
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    bool Toto::calcul(const string & loi, map<string,vector<double> > & param,double & sortie)
    {/*...*/}
    bazar: http://www.improetcompagnie.com/publ...ctacles-6.html

    BÉPO la disposition de clavier francophone, ergonomique et libre: http://bepo.fr/wiki/Accueil

    Emacs Wiki: http://www.emacswiki.org/

    En attente de ce que produira: http://www.pushmid.com

  5. #5
    Membre chevronné
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Points : 2 205
    Points
    2 205
    Par défaut
    Citation Envoyé par salseropom Voir le message
    OK, merci pour ta réponse. C'est un peu dommage...
    En même temps vu que l'op[] est susceptible de modifier la map je vois mal comment il pourrait en être autrement...
    "Hardcoded types are to generic code what magic constants are to regular code." --A. Alexandrescu

  6. #6
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Points : 4 732
    Points
    4 732
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

Discussions similaires

  1. Problème sur une map avec sf::Key.
    Par shirohige dans le forum C++
    Réponses: 7
    Dernier message: 18/11/2013, 21h30
  2. Problème de séparateur " " avec une Map
    Par supcomingenieur dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 14/05/2013, 16h42
  3. j'ai une probléme avec le map
    Par killer_instinct dans le forum C++
    Réponses: 4
    Dernier message: 10/12/2006, 14h58
  4. Problème avec memory mapping
    Par gemai dans le forum C
    Réponses: 13
    Dernier message: 04/07/2003, 09h50
  5. Problème avec une procédure stockée
    Par in dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/05/2003, 15h33

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