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

Langage C++ Discussion :

Utilisation d'un template avec une map


Sujet :

Langage C++

  1. #1
    Membre confirmé
    Profil pro
    Developpeur
    Inscrit en
    Avril 2004
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Avril 2004
    Messages : 160
    Par défaut Utilisation d'un template avec une map
    Bonjour;

    J'ai une fonction decalré public de cette façon:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    template <class T>
    void Maclasse::addMapToCombo( map< T, string > &pMap, vector<string> *vsExceptKey = NULL )
    j'ai essyé de l'appelé de plusieur façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Maclasse Maclass;
    Maclass->addMapToCombo<char>( maMap );
    Maclass->addMapToCombo( maMap );
    Maclass->addMapToCombo<>( maMap);
    Mais ça marche , toujours message comm quoi il connai pas la fonction (message d'erreur Unresolved external.... ) merci pour votre aide.


  2. #2
    Membre confirmé
    Profil pro
    Developpeur
    Inscrit en
    Avril 2004
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Avril 2004
    Messages : 160
    Par défaut
    J'ai remet tous le code dans .h comme ce qui est expliquer dans le FAQ mais j'ai toujours des messages d'erreurs:
    Impossible de touver une correspondance

  3. #3
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Quelle est l'erreur associée à quel code ?

  4. #4
    Membre Expert
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Maclasse Maclass;
    Maclass->addMapToCombo<char>( maMap );
    "->" replacé par "."

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Maclasse o;
    o.addMapToCombo<char>( maMap );
    Map est bien du type

    <char,string> ?

  5. #5
    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
    Par défaut
    C'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Maclasse Maclass;
    Maclass.addMapToCombo( maMap );
    Ensuite ton problème semble venir du fait que tu ne sais pas lier les templates.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 109
    Par défaut
    Salut,

    C'est jamais évident les template et les container je trouve (

    Je fais comme ça quand ca se présente (je sais pas si c efficace mais ça marche)



    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    #include <cstdlib>
    #include <iostream>
    #include <map>
    #include <string>
    
    using std :: string;
    using std :: map;
    using std :: cout;
    using std :: endl;
    using std :: pair;
    
    
    /* J'utilise plutot le parmètre comme le container entier (et non map<T,string>) */
    template<class C,class T> void AddValue(C& container,const T& key,const string& value)
    {
           container[key] = value;
    }
    
    // Attention au typename
    template<class C> void Display(const C& container)
    {
           typename C :: const_iterator mcit = container.begin();
           while(mcit!= container.end()) {
                        cout << " Clef : " << mcit->first << " Value : " << mcit->second << endl;
                        ++mcit;
                        };
    }
    
    
    
    int main(int argc, char *argv[])
    {
        map<int,string> istringmap;
        map<char,string> cstringmap;
        map<double,string> dstringmap;
        
       // J'ajoute les valeurs
        AddValue(istringmap,1,"Un");
        AddValue(istringmap,2,"Deux");
        AddValue(istringmap,3,"Trois");
        AddValue(istringmap,4,"Quatre");
        
        AddValue(cstringmap,'1',"Un");
        AddValue(cstringmap,'2',"Deux");
        AddValue(cstringmap,'3',"Trois");
        AddValue(cstringmap,'4',"Quatre");
        
        AddValue(dstringmap,1.25,"Un,vingtcinq");
        AddValue(dstringmap,2.9,"Deux,neuf");
        AddValue(dstringmap,3.8,"Trois,huit");
        AddValue(dstringmap,4.7,"Quatre,sept");
        
       // Affiche
        Display(istringmap); cout << endl;
        Display(cstringmap); cout << endl;
        Display(dstringmap); cout << endl;
           
        system("PAUSE");
        return EXIT_SUCCESS;
    }

    Si ça peut te guider ...

  7. #7
    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
    Citation Envoyé par bonano
    J'ai remet tous le code dans .h comme ce qui est expliquer dans le FAQ mais j'ai toujours des messages d'erreurs:
    Impossible de touver une correspondance

    C'est mieux, c'est une erreur de compilation, et non de link. Le message d'erreur détaillé devrait t'apporter (et à nous aussi éventuellement) plus d'infos. Autrement, la syntaxe la plus courante est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Maclass.addMapToCombo( maMap );
    Mais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Maclass.addMapToCombo<int>( maMap );
    Est légal aussi.
    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.

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

Discussions similaires

  1. Problème de template avec une queue
    Par Davidbrcz dans le forum Langage
    Réponses: 18
    Dernier message: 22/08/2007, 15h04
  2. pb de suppression d'éléments avec une map
    Par pada51 dans le forum SL & STL
    Réponses: 2
    Dernier message: 08/08/2007, 14h36
  3. Utiliser un fichier Word avec une application Windev.
    Par Belgarath4 dans le forum WinDev
    Réponses: 7
    Dernier message: 18/07/2007, 17h04
  4. [Conception] Avoir le Fifo avec une Map en Java.
    Par petozak dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 19/02/2007, 15h54
  5. [VB.NET]Utiliser un INSERT INTO avec une VIew Access
    Par Ashleyriot dans le forum Accès aux données
    Réponses: 3
    Dernier message: 23/11/2006, 18h31

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