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 :

Restriction template de class ( Suite )


Sujet :

Langage C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 85
    Par défaut Restriction template de class ( Suite )
    Je souhaiterai avoir une confirmation.
    Ne peut t on pas definir una macro permettant de comparer ( lien filiale) entre 2 classes (templates)?

  2. #2
    Alp
    Alp est déconnecté
    Expert confirmé

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Bah tu as un template. L'information est disponible à la compilation.

    Quel est le problème ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 85
    Par défaut
    Voici ce que j 'ai fabriqué de manière peut invasive et par l utilisation de macro
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    # define REF typedef int Type;
    # define LABEL(CLASS_T) void G ( typename CLASS_T::Type);
     
    template< int n=2> 
    struct C
    {
    	int F () {return -n;}
    };
     
     
    template< int n=2> 
    struct A
    {
    	REF;
    	int F () {return n;}
    };
     
    template< int n=2> 
    struct B:public A<n>{
     
    	int F () {return n+1;}
    };
     
    template< class T> 
    struct H
    {
    	LABEL(T);
    	int h () { T a; return a.F();}
    };
     
     
    int main()
    {
    	H<A<> > u_a;
    	H<B<> > u_b;
    	H<C<> > u_c;   
     
    	int a = u_a.h();
    	int b = u_b.h();
    	int c = u_c.h();  
     
    	return 0;
    }

    J'ai utilise le document sur le Sfinae que je ne connaissais pas

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 85
    Par défaut
    Un toute petite amelioration qui permet de relier individuellement la classe template et son argument
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    # define REF(Type) typedef int Type;
    # define LABEL(CLASS_T,Type) void G ( typename CLASS_T::Type);
     
    template< int n=2> 
    struct C
    {
    	int F () {return -n;}
    };
     
     
    template< int n=2> 
    struct A
    {
    	REF(t);
    	int F () {return n;}
    };
     
    template< int n=2> 
    struct B:public A<n>{
     
    	int F () {return n+1;}
    };
     
    template< class T> 
    struct H
    {
    	LABEL(T,t);
    	int h () { T a; return a.F();}
    };
     
     
    int main()
    {
    	H<A<> > u_a;
    	H<B<> > u_b;
    	H<C<> > u_c;   
     
    	int a = u_a.h();
    	int b = u_b.h();
    	int c = u_c.h();  
     
    	return 0;
    }
    Qu 'en pensez vous?

  5. #5
    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
    Par défaut
    Salut,
    (ton chef a rien compris aux template de la discussion précédent et demande une autre solution ?)
    Le système que tu proposes ne détermine plus un lien entre 2 classes mais d'une certaine façon impose un pré-requis de la classe T. Il suffit de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    template< int n=2>
    struct C
    {
       REF(t)
    	int F () {return -n;}
    };
    pour que ça marche.

  6. #6
    Alp
    Alp est déconnecté
    Expert confirmé

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Accessoirement, c'est intrusif

  7. #7
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    Et pire c'est une macro... du coup le gars qu'arrive derrière, il va se demander wtf le REF() dans la classe... (vu que y'a pas type explicitement)

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

Discussions similaires

  1. restriction sur une classe template
    Par Math75 dans le forum Langage
    Réponses: 31
    Dernier message: 02/10/2009, 11h02
  2. [Template] Problème Classe Template
    Par gimpycpu dans le forum Langage
    Réponses: 7
    Dernier message: 23/05/2007, 05h10
  3. Méthode template dans classe non template ?
    Par shenron666 dans le forum Langage
    Réponses: 12
    Dernier message: 04/09/2006, 17h50
  4. Utilisation de templates et classe en PHP?
    Par wkd dans le forum Langage
    Réponses: 1
    Dernier message: 01/09/2006, 15h36
  5. Template et classe "amie" ?
    Par tintin72 dans le forum Langage
    Réponses: 21
    Dernier message: 11/07/2006, 22h50

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