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 :

iterator, classe imbriquée, et template


Sujet :

C++

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 130
    Points : 188
    Points
    188
    Par défaut iterator, classe imbriquée, et template
    Bonjour,

    je suis face à un problème de compilation, et je n'ai pas réussi à trouver d'informations utiles sur ce site ou sur le net.

    Globalement, mon problème est donné par ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include <list>
    using namespace std;
     
    template < typename T >
    class A{
     
    public:
      class B{ };
     
      void test(){
        list<B>::iterator it; //ligne incriminée par le compilateur
      }
    };
    À la compilation, g++ m'indique "error: expected ‘;’ before ‘it’"..
    En particulier, j'ai pu remarquer que :
    • en supprimant la ligne "template <typename T>", je compile sans souci
    • en supprimant purement et simplement le "it", je compile sans souci
    • en supprimant à la fois le "template <typename T>" et le "it", g++ m'indique "error: declaration does not declare anything"


    Avez vous une explication sur ce qui peut être à l'origine de cette erreur de compilation (ou disposez vous de liens vers des documents qui pourraient me révéler la réponse) ?

    Merci d'avance !

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include <list>
    using namespace std;
    
    template < typename T >
    class A{
    
    public:
      class B{ };
    
      void test(){
        typename list<B>::iterator it; //ligne incriminée par le compilateur
      }
    };
    F.A.Q. : A quoi sert le mot-clé typename ?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 130
    Points : 188
    Points
    188
    Par défaut
    Effectivement, ça compile sans problème.
    Je n'avais pas réalisé que cette entrée de la FAQ correspondait à mon problème.

    Merci beaucoup !

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

Discussions similaires

  1. Templates de classes imbriquées et héritage
    Par progcyb dans le forum Langage
    Réponses: 0
    Dernier message: 18/11/2014, 21h54
  2. [C#]Remonter des événements dans des classes imbriquées
    Par Kcirtap dans le forum Windows Forms
    Réponses: 9
    Dernier message: 14/12/2013, 12h43
  3. Réponses: 6
    Dernier message: 28/12/2006, 18h22
  4. classes imbriquées
    Par smedini dans le forum C++
    Réponses: 10
    Dernier message: 10/12/2005, 13h16
  5. Intérêt des classes imbriquées ?
    Par elitost dans le forum Langage
    Réponses: 5
    Dernier message: 21/10/2005, 09h30

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