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 :

CRTP et types internes des types d�riv�s


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �prouv�
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par d�faut CRTP et types internes des types d�riv�s
    Hello,

    Est-il possible, dans ce code, de se passer du trait que j'ai d� utiliser ?

    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
    33
    #include <iostream>
    using namespace std;
     
    class B;
     
    template <class T>
    struct EnumTrait;
     
    template <>
    struct EnumTrait<B>
    {
    	enum MyEnum { enum1, enum2, enum3 };
    };
     
     
    template <class T>
    struct A
    {
    	typename EnumTrait<T>::MyEnum myVar;
    };
     
    class B : A<B>
    {
    	// idéalement, j'aurais voulu ça :
    	// enum MyEnum { enum1, enum2, enum3 };
    };
     
    int main()
    {
    	B myInstance;
     
    	return 0;
    }

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Par d�faut
    Salut oodini

    Le sujet a tra�n� alors je ne sais pas si tu cherches toujours une r�ponse. Je n'ai pas tr�s bien compris ce que tu recherches. Veux-tu que l'enum soit expos� dans la classe B ? Que veux-tu dire par "se passer du trait" ? De ce que j'ai compris, j'aurais fait ceci:

    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
    #include <iostream>
    using namespace std;
     
    class B;
    template <class T> struct EnumTrait;
     
    template <> struct EnumTrait<B> {
      enum MyEnum { enum1, enum2, enum3 };
    };
     
    template <class T> struct A {
      using MyEnum = typename EnumTrait<T>::MyEnum;
    };
     
    class B : A<B> {
      MyEnum my_var_ = MyEnum::enum1;
    };
     
    int main() {
      B myInstance;
      return 0;
    }

  3. #3
    Membre �prouv�
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par d�faut
    "Se passer du trait", �a veut dire de virer dans mon code tout ce qui se trouve avant la ligne 16. Ne pas avoir de classe de trait !
    Mais je vois que toi aussi tu utilises des traits.

    Mon intention initiale �tait ce qu'il y avait en commentaire dans la classe B.

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Par d�faut
    Il y a deux poids deux mesures:
    - Soit tu sp�cialises A pour B en lui d�finissant son enum, dans lequel cas tu n'as plus de traits.
    - Soit tu ne veux pas te taper toute la sp�cialisation de A juste pour l'enum, dans lequel cas utiliser une classe de traits est une bonne id�e.

    Qu'est ce que tu n'aimes pas dans l'usage de classes de traits ?

  5. #5
    Membre �prouv�
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par d�faut
    Ben �a fait du code en plus qui pollue.

    C'e�t �t� plus propre autrement, mais ce n'est apparemment pas possible.
    Je me suis fait une raison, et j'ai utilis� les traits.

    Merci n�anmoins de t'�tre pench� sur mon cas.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [LibreOffice][Tableur] Utilisation des Types et des Collections
    Par CBresso dans le forum OpenOffice & LibreOffice
    R�ponses: 2
    Dernier message: 11/04/2015, 11h08
  2. cr�ation des types et des tables en sql3
    Par asma07 dans le forum Langage SQL
    R�ponses: 3
    Dernier message: 09/01/2011, 20h42
  3. Reconnaissance des types corba de type structure
    Par Lolitaaa dans le forum CORBA
    R�ponses: 3
    Dernier message: 14/12/2009, 13h21
  4. convertir des types C en type Java
    Par kespy13 dans le forum Langage
    R�ponses: 4
    Dernier message: 09/02/2009, 19h07
  5. [ADO] Constantes des types de champ
    Par SpaceFrog dans le forum VB 6 et ant�rieur
    R�ponses: 3
    Dernier message: 05/09/2002, 11h08

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