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 :

Problème de class template et std::map


Sujet :

Langage C++

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 20
    Points : 9
    Points
    9
    Par défaut Problème de class template et std::map (Résolue)
    Bonjour,

    J'ai un petit problème de taille avec mes class templates et std::map

    Je m'explique :

    J'ai les class templates 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
    19
    template <typename T>
    class CResource
    {
     // ...
    };
     
    template <typename T>
    class CResourcePtr
    {
     // ...
    };
     
    template <typename T>
    class CResourcesManager
    {
     std::map< std::string, CResource<T> > m_resources;
     
     CResourcePtr<T> getResource( const std::string& name );
    };
    La class CResourcesManager sert à être hérité par une autre class, comme
    l'exemple si-dessous.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class CTexturesManager : CResourcesManager<int>
    {
     // ...
    };


    Mon problème, ça trouve dans la class CResourcesManager, ou plus précisément dans l’une de ses fonctions membres qui est celle-ci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    template <typename T>
    CResourcePtr<T> CResourcesManager<T>::getResource( const std::string& path )
    {
     // Erreur ICI, le compilateur n'est pas contant :(
        std::map< std::string, CResource<T> >::iterator it;
    }
    J'ai l'impression qu'il n'aime pas CResource<T> dans std::map, car si je le remplace par CResource<int>, il n'y a pas de problème.

    Est-ce que c'est normal ?

    Merci d'avance.

    Bathof

  2. #2
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 861
    Points
    11 861
    Par défaut
    Il faut rajouter le mot clé typename.

    Cela donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    typename std::map< std::string, CResource<T> >::iterator it;
    Cf : http://c.developpez.com/faq/cpp/inde...LATES_typename

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 20
    Points : 9
    Points
    9
    Par défaut
    Merci beaucoup.

    J’aurais dû y penser

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

Discussions similaires

  1. Problème de classe "template"
    Par Josiane22 dans le forum C++
    Réponses: 3
    Dernier message: 27/03/2013, 23h04
  2. Problème de classes template + CRTP
    Par Kaluza dans le forum Langage
    Réponses: 20
    Dernier message: 05/08/2012, 10h46
  3. Acceder a la fonction membre d'une classe, dans une std::map
    Par student_php dans le forum Débuter
    Réponses: 2
    Dernier message: 10/05/2011, 20h38
  4. problème avec classe template
    Par arthurembo dans le forum Langage
    Réponses: 2
    Dernier message: 09/02/2009, 07h46
  5. Problème déclaration classe template
    Par olivier1978 dans le forum Langage
    Réponses: 3
    Dernier message: 21/11/2007, 23h43

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