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 :

string et STL


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 10
    Par défaut string et STL
    Bonjour,

    je n'arrive pas à compiler (sous Visual Studio 2010) lorsque j'utilise une map avec une string. J'ai écris un bout de code qui vous montre le problème si vous essayez de compiler :

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    #include "stdafx.h"
    #include <iostream>
    #include <map>
     
    using namespace std;
     
    class Personne
    {
    public:
    	Personne(string nom) {cout << _nom << endl; }
    	void sePresenter()
    	{
    		cout << "Je suis : " << _nom.c_str() << endl;
    	}
     
    private:
    	string _nom;
    };
     
     
    int _tmain(int argc, _TCHAR* argv[])
    {
    	Personne* p = new Personne("toto"); 
     
    	map<string, Personne*> groupe;
    	pair<string, Personne*> pp("toto", p);
     
    	groupe1.insert ( pp );
     
    	system("PAUSE");
     
    	return 0;
    }
    A priori ce n'est pas très compliqué, mais la ligne insert ne compile pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error C2784: 'bool std::operator <(const std::_Tree<_Traits> &,const std::_Tree<_Traits> &)'*: impossible de déduire l'argument modèle pour 'const std::_Tree<_Traits> &' à partir de 'const std::string'
    Pourtant, ma syntaxe me semble correcte ?

    Merci par avance aux membres éclairés pour leur avis !

  2. #2
    Expert confirmé

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 033
    Billets dans le blog
    12
    Par défaut
    Euh ... où est déclaré groupe1 ? je vois bien groupe...
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 10
    Par défaut
    Bonjour,

    oui, bien sûr, c'est groupe et non groupe1 !

    C'est une erreur de recopie, mais l'erreur est bien au niveau du insert, lors de la compilation : voir le message d'erreur que je reçois comme mentionné dans mon post.

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    #include "stdafx.h"
    #include <iostream>
    #include <map>
     
    using namespace std;
     
    class Personne
    {
    public:
    Personne(string nom) {cout << _nom << endl; }
    void sePresenter()
    {
    cout << "Je suis : " << _nom.c_str() << endl;
    }
     
    private:
    string _nom;
    };
     
     
    int _tmain(int argc, _TCHAR* argv[])
    {
    Personne* p = new Personne("toto");
     
    map<string, Personne*> groupe;
    pair<string, Personne*> pp("toto", p);
     
    groupe.insert ( pp );
     
    return 0;
    }
    A priori ce n'est pas très compliqué, mais la ligne insert ne compile pas :

    error C2784: 'bool std::operator <(const std::_Tree<_Traits> &,const std::_Tree<_Traits> &)'*: impossible de déduire l'argument modèle pour 'const std::_Tree<_Traits> &' à partir de 'const std::string'
    Merci

  4. #4
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Je n'ai pas lu en détails, mais je crois que j'ai déjà eu ce genre d'erreurs quand j'ai oublié le #include <string>
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 10
    Par défaut
    La honte est sur moi... j'ai oublié le include.

    Merci (à tous les deux) !

  6. #6
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 25
    Par défaut
    Est-ce que je suis le seul à trouver irritant de voir des extraits de code parfaitement portables utiliser ce genre d'éléments?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #include "stdafx.h"
     
    // ou
     
    int _tmain(int argc, _TCHAR* argv[])
    Je veux bien croire qu'elles apparaissent dans un programme utilisant certaines des extensions Microsoft. Cependant, un grande quantité de programmes n'utilisent que du C++ standard mais nécessitent tout de même d'être modifiés pour pouvoir être testés sur d'autre compilateurs que Visual Studio.

  7. #7
    Expert confirmé

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 033
    Billets dans le blog
    12
    Par défaut
    J'ai pris ton bout de code et l'ai compilé sous VS2010, le seul problème que j'ai rencontré est qu'il manque #include <string>, sinon ça compile très bien. (il manque tout de même l'affectation de nom à _nom dans ton constructeur de Personne)
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

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

Discussions similaires

  1. [stl] questions sur la classe string
    Par r0d dans le forum SL & STL
    Réponses: 3
    Dernier message: 23/02/2007, 00h31
  2. [STL]string, fuites de mémoires
    Par anasama dans le forum SL & STL
    Réponses: 8
    Dernier message: 18/05/2006, 08h58
  3. [STL]std::map<std::string, structure> Parcour...
    Par Zenol dans le forum SL & STL
    Réponses: 5
    Dernier message: 11/02/2006, 13h46
  4. Réponses: 7
    Dernier message: 25/11/2005, 17h11
  5. [STL] vector<string> et appel de fonctions.
    Par guejo dans le forum MFC
    Réponses: 4
    Dernier message: 08/10/2004, 17h36

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