assurer l'héritage d'un template
  Home FAQ Contact Sign in
fr.comp.lang.c++ only
 
Advanced search
POPULAR GROUPS

more...

fr.comp.lang.c++ Profile…
 Up
assurer l'héritage d'un template         


Author: jeremie fouche
Date: May 8, 2008 15:21

Bonsoir
Je ne savais pas trop quel titre donner à mon post. Ce que je souhaite,
c'est assurer qu'un membre template hérite d'une classe donnée.

un bon exemple vaut mieux qu'un long discourt :

#include

class A
{
public:
A() {}
void Do() { std::cout << "A" << std::endl; }
};

class B : public A
{
public:
B() {}
void Do() { std::cout << "B" << std::endl; }
};
Show full article (0.92Kb)
24 Comments
Re: assurer l'héritage d'un template         


Author: Sylvain SF
Date: May 8, 2008 15:37

jeremie fouche wrote on 09/05/2008 00:21:
> Bonsoir
> Je ne savais pas trop quel titre donner à mon post. Ce que je souhaite,
> c'est assurer qu'un membre template hérite d'une classe donnée.

dans votre exemple, ni la classe D, ni sa fonction membre 'Do'
"n'hérite" de la classe B ou A ou C. la garantie serait plus
comment s'assurer que la méthode Do reçoit un paramètre donnée.
votre question est donc: comment définir une fonction paramétrable
qui n'accepte qu'un un seul type de paramètre donné ?!

êtes-vous sur que cela a du sens ? ou que votre contrainte est
clairement expliquée ?

Sylvain.
no comments
Re: assurer l'héritage d'un template         


Author: jeremie fouche
Date: May 8, 2008 15:44

Sylvain SF a écrit :
> jeremie fouche wrote on 09/05/2008 00:21:
>> Bonsoir
>> Je ne savais pas trop quel titre donner à mon post. Ce que je souhaite,
>> c'est assurer qu'un membre template hérite d'une classe donnée.
>
> dans votre exemple, ni la classe D, ni sa fonction membre 'Do'
> "n'hérite" de la classe B ou A ou C. la garantie serait plus
> comment s'assurer que la méthode Do reçoit un paramètre donnée.
> votre question est donc: comment définir une fonction paramétrable
> qui n'accepte qu'un un seul type de paramètre donné ?!

Absolument.
> êtes-vous sur que cela a du sens ? ou que votre contrainte est
> clairement expliquée ?
Show full article (1.02Kb)
no comments
Re: assurer l'héritage d'un template         


Author: Fabien LE LEZ
Date: May 8, 2008 15:57

On Fri, 09 May 2008 00:21:26 +0200, jeremie fouche :
> void Do(void)

Note en passant : le deuxième "void" est totalement inutile, et
typique d'un code en C. En C++ on écrira plutôt :

void Do()
>class B : public A
> Do(); // OK, ca doit compiler
> Do(); // ne doit pas compiler
> Do(); // ne doit pas compiler

En résumé :

- si T = A, erreur de compilation
- sinon, si T dérive de A, OK
- sinon, erreur

C'est bien ça ?

Ça ressemble fort aux sections 2.7 et 2.1 de "Modern C++ Design"
(Alexandrescu).

Apparemment que le code suivant répond à la question :

#include "static_check.h"
#include "TypeManip.h"
Show full article (1.29Kb)
no comments
Re: assurer l'héritage d'un template         


Author: Fabien LE LEZ
Date: May 8, 2008 15:59

On Fri, 09 May 2008 00:44:51 +0200, jeremie fouche :
>Je souhaite refuser d'utiliser la méthode D::Do avec autre chose qu'une
>classe héritant de A.

Là où j'ai du mal à comprendre le sens, c'est que tu acceptes B mais
refuses A.
no comments
Re: assurer l'héritage d'un template         


Author: Fabien LE LEZ
Date: May 8, 2008 16:00

On Fri, 09 May 2008 00:57:41 +0200, Fabien LE LEZ :
>Apparemment que le code suivant

Ja parler la France aussi bien que Johnny...
Désolé.
no comments
Re: assurer l'héritage d'un template         


Author: Sylvain SF
Date: May 8, 2008 17:09

Fabien LE LEZ wrote on 09/05/2008 00:57:
>
> template void Do()
> {
> STATIC_CHECK (SUPERSUBCLASS_STRICT (A, T), T_doit_deriver_de_A);
> ...
> }

je pensais bien à un typeid mais les infos ne sont disponibles
qu'au runtime pas à la compil., c'est le cas ici ?
(j'ai parcouru le wiki mais pas éplucher tout le zip).

"T_doit_deriver_de_A" correspond à quoi ? (juste un bool utilisé
par STATIC_CHECK pour comparer ses 2 membres ?)

Sylvain.
no comments
Re: assurer l'héritage d'un template         


Author: Sylvain SF
Date: May 8, 2008 17:23

Sylvain SF wrote on 09/05/2008 02:09:
>
> c'est le cas ici ?

j'ai trouvé mes réponses ... et je ne les ai pas comprises!

Sylvain.
no comments
Re: assurer l'héritage d'un template         


Author: Fabien LE LEZ
Date: May 8, 2008 17:37

Show full article (1.45Kb)
no comments
Re: assurer l'héritage d'un template         


Author: James Kanze
Date: May 9, 2008 01:53

On May 9, 2:09 am, "Sylvain SF" boiteaspam.info> wrote:
> Fabien LE LEZ wrote on 09/05/2008 00:57:
>> template void Do()
>> {
>> STATIC_CHECK (SUPERSUBCLASS_STRICT (A, T), T_doit_deriver_de_A);
>> ...
>> }
> je pensais bien à un typeid mais les infos ne sont disponibles
> qu'au runtime pas à la compil., c'est le cas ici ?
> (j'ai parcouru le wiki mais pas éplucher tout le zip).
> "T_doit_deriver_de_A" correspond à quoi ? (juste un bool utilisé
> par STATIC_CHECK pour comparer ses 2 membres ?)

Je te conseille le Vandevoorde et Josuttis : il décrit en
détail ce genre de chose, et c'est extrèmement bien écrit. Dans
ce cas-ci, grosso modo :
Show full article (5.47Kb)
no comments

RELATED THREADS
SubjectArticles qty Group
using templates and separating the files in .h and .cppgnu.g++.help ·
Héritage d'un parent éloigné -> quid de la gestion du patimoine hérité ?fr.misc.droit.famille ·
 
1 2 3