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 :

std::list d'une class Template


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 7
    Par défaut std::list d'une class Template
    Bonjour a tous,

    Dans le cadre de mes etudes je suis bloque sur un exercice, je n'arrive pas a compiler un bete code utilisant les templates.
    L'exo consiste a refaire une multimap perso.

    J'ai donc une classe Pair comme suit :
    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
     
    template <typename K, typename V> class Pair {
    public:
     
        Pair(K &k, V &v) : _key(k), _value(v) {
        }
     
        Pair(const Pair<K, V> &p) {
            *this = p;
        }
     
        Pair & operator=(const Pair &p) {
            if (this != &p) {
                _key = p._key;
                _value = p._value;
            }
            return (*this);
        }
     
        K& getKey() const {
            return _key;
        }
     
        V& getValue() const {
            return _value;
        }
     
     
    private:
        K &_key;
        V &_value;
    };
    Mon soucis vien quan je cherche a declarer un std::list de Pair.
    Je pensais avoir resolu le probleme en declarant un typedef :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    template <typename K, typename V>class Multimap {
    public:
        typedef std::list<Pair<V, K> > listType; /* Mon typedef */
    
    private:
       listType _list; /* Ma list */
    
        listType &getElemsByKey(const K& key) {
           listType::iterator it = _list.begin(); /* ERREUR DE COMPILE ICI */
        }
    };
    J'ai une grosse erreur sur cette ligne :

    ./ex_4/ex_4.hpp: In member function `std::list<Pair<V, K>, std::allocator<Pair<V, K> > >& Multimap<K, V>::getElemsByKey(const K&)':
    In file included from ./ex_4/main.cpp:3:
    ./ex_4/ex_4.hpp:80: error: expected `;' before "it"
    Mon compilateur g++ version 3.4.4

    Merci d'avance

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Doubs (Franche Comté)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 1 391
    Par défaut
    Rajoute typename devant listType::iterator; Comme tu utilises des template, lorsque tu utilises un type contenue dans une classe il faut indiquer au compilateur que c'est un type car il ne peut pas le savoir avant l'instanciation. Je te laisse regarder dans la FaQ pour le détail.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 7
    Par défaut
    Merci sa résout mon problème, même si je n'est pas tous compris je vais aller jetez un oeil a la faQ.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 31/07/2012, 18h53
  2. Définition de méthodes pour une classe template
    Par Pragmateek dans le forum Langage
    Réponses: 13
    Dernier message: 20/12/2008, 00h46
  3. Probleme avec une class template
    Par lenectar dans le forum Langage
    Réponses: 2
    Dernier message: 01/03/2006, 10h49
  4. Réponses: 4
    Dernier message: 08/11/2005, 15h10
  5. Trouver le Type d'une classe template dynamiquement ?
    Par Serge Iovleff dans le forum Langage
    Réponses: 3
    Dernier message: 23/09/2005, 16h48

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