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 :

Probleme de template dans pair<>


Sujet :

C++

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Probleme de template dans pair<>
    Bonsoir, J'essaie de redefinir la classe map.
    Mais je suis bloqué quand je déclare un vecteur de liste de pair,
    le problème est que le compilateur refuse que la pair soit de type
    generique
    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
    template<typename key,typename T, typename hashFun>
    class hmap{
       public:
         typedef key                       key_type;
         typedef T                         mapped_type;
         typedef unsigned                  size_type;
         typedef long                      differense_type;
         typedef std::pair<const key,T>    value_type;
         typedef value_type*               pointer;
         typedef const value_type*         const_pointer;
         typedef value_type&               reference;
         typedef const value_type&         const_reference;
         class                             iterator;
         typedef const iterator            const_iterator;
       private:
         vector<list<value_type> > tab;
         size_type nbElem;
         hashFun hash;
       public:
         friend class iterator;
         class iterator{
             vector<list<value_type> >::iterator vit,endtab;

  2. #2
    Membre émérite

    Inscrit en
    Mai 2008
    Messages
    1 014
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 1 014
    Points : 2 252
    Points
    2 252
    Par défaut
    Bonjour,
    Un grand classique... cf la
    A quoi sert le mot-clé typename ?

    D'ailleurs, VS2010 est assez malin, il a bien deviné que "std::vector<std::list<value_type> >::iterator" était un type mais le standard lui interdit de compiler en l'absence de typename, donc il te suggère dans son warning de le rajouter !
    Citation Envoyé par warning C4346
    "warning C4346: 'std::vector<std::list<std::pair<const key,T>>>::iterator' : dependent name is not a type.
    prefix with 'typename' to indicate a type

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Merci, mais je vois pas pourqoui sa bloque, je suis a court d'idée

  4. #4
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 612
    Points : 30 611
    Points
    30 611
    Par défaut
    Salut, et bienvenue sur le forum.

    Peut être ne l'as tu pas remarqué, mais, dans la réponse de Azar, il y a un lien vers une entrée de la FAQ qui devrait t'intéresser...

    Oui, oui, le texte en bleu souligné est bel et bien un lien, que je te conseillerais de suivre

    Si tu l'avais suivi, tu aurais compris, grâce aux indications données par Azar, qu'il faut modifier la ligne
    Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
    typedef std::pair<const key,T>    value_type;
    en
    Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
    typedef typename std::pair<const key,T>    value_type;

    PS: excuses moi par avance du ton pris pour te répondre, je ne veux pas te vexer, mais j'ai parfois un tempérament frondeur
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  5. #5
    Membre chevronné
    Avatar de Joel F
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Points : 1 921
    Points
    1 921
    Par défaut
    koala, non, c'ets la ligne dans l'iterator à modifier. pair<const key,T> n'ets pas un type dépendant et n'a pas besoin de typename

  6. #6
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 612
    Points : 30 611
    Points
    30 611
    Par défaut
    Citation Envoyé par Joel F Voir le message
    koala, non, c'ets la ligne dans l'iterator à modifier. pair<const key,T> n'ets pas un type dépendant et n'a pas besoin de typename
    Effectivement, si j'avais tenté la compilation, je me serais rendu compte que le problème apparaissait... dans la classe iterator

    C'est donc la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vector<list<value_type> >::iterator vit,endtab;
    qui devrait être remplacée par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    typename vector<list<value_type> >::iterator vit,endtab;
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Un grand merci, je rassure tous le monde j'ai lu la F.A.Q aussi parfait merci

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

Discussions similaires

  1. Probleme de template dans un fichier .cpp
    Par bouritosse dans le forum Débuter
    Réponses: 6
    Dernier message: 01/10/2014, 15h44
  2. [XSLT] Problème de xmlns dans un template
    Par Crazyfaboo dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 16/08/2007, 13h47
  3. Probleme d utilisation de template dans le cpp
    Par Math75 dans le forum Langage
    Réponses: 2
    Dernier message: 07/10/2005, 17h26
  4. Probleme d'éffacement dans le cookie
    Par Geulderack dans le forum XMLRAD
    Réponses: 6
    Dernier message: 02/04/2003, 15h17
  5. Probleme de filtre dans bdd
    Par scorpiwolf dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/06/2002, 11h43

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