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 :

Typedef dans une classe mère template


Sujet :

Langage C++

  1. #1
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut Typedef dans une classe mère template
    Bonjour,

    Le code suivant est-il conforme :
    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
    template< typename T >
    struct base
    {
      typedef T base_type;
    };
     
    template< typename T >
    struct interface
    {
      void method() {}
    };
     
    template< typename T >
    struct derived : base< interface< T > >
    {
      derived()
      {
        &base_type::method;
      }
    };
    ?

    Il compile sous vc80 mais pas avec cygwin/gcc3.4 et surtout pas avec Comeau (ce qui en général n'est pas bon signe).

    Je sais qu'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        &base< interface< T > >::base_type::method;
    Voire même :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        &derived::base_type::method;
    Permet apparemment de résoudre le problème mais ce n'est pas une solution possible dans mon contexte (c'est du code extrait d'un morceau de code plus gros 'généré' par macros).

    J'ai un peu cherché dans le texte de la norme mais je n'ai rien trouvé de vraiment clair et définitif...

    Merci !
    MAT.

  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,
    En redéfinissant le type à l'intérieur de ta classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    template< typename T >
    struct derived : base< interface< T > >
    {
       typedef typename base< interface< T > >::base_type base_type;
      derived()
      {
        &base_type::method;
      }
    };

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    Ah oui pardon, j'ai oublié de préciser que ce n'est pas possible non plus dans mon cas.

    MAT.

Discussions similaires

  1. Réponses: 13
    Dernier message: 23/05/2013, 20h38
  2. Réponses: 18
    Dernier message: 01/03/2012, 10h34
  3. Membre générique dans une classe ("member template")
    Par damien.flament dans le forum Langage
    Réponses: 13
    Dernier message: 26/08/2010, 07h43
  4. Typedefs dans une classe template
    Par olivier1978 dans le forum Langage
    Réponses: 1
    Dernier message: 29/10/2007, 01h12
  5. typedef dans une class template
    Par yan dans le forum Langage
    Réponses: 2
    Dernier message: 01/10/2007, 10h43

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