Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1429 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  templates et héritage

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

templates et héritage

n°1149283
Profil sup​primé
Posté le 13-07-2005 à 16:48:37  answer
 

bonjour,
 
le code suivant ne compile pas avec gcc :
 
template<class A, class B>
class C
{
 public :
 
 typedef int D;
 D * d;
 
};
 
template<class A, class B>
class E : C<A,B>
{
 public:
 
 void something()
 {
  d;
 }
};
 
pour gcc la variable d n'est pas déclarée
une idée ?

mood
Publicité
Posté le 13-07-2005 à 16:48:37  profilanswer
 

n°1149309
theshockwa​ve
I work at a firm named Koslow
Posté le 13-07-2005 à 17:08:37  profilanswer
 

tu fais un héritage privé :o

n°1149338
Profil sup​primé
Posté le 13-07-2005 à 17:27:39  answer
 

ça plante si j'explicite l'héritage public :
 
template<class A, class B>
class C
{
 public :
 
 typedef int D;
 D * d;
 
};
 
template<class A, class B>
class E : public C<A,B>
{
 public:
 
 void something()
 {
  D * d1 = d;
  D * d2 = d1;
  d1 = d2;
 }
};

n°1149345
Profil sup​primé
Posté le 13-07-2005 à 17:34:33  answer
 

a y est trouvé, faut mettre  
 
C<A,B>::d;

n°1149354
theshockwa​ve
I work at a firm named Koslow
Posté le 13-07-2005 à 17:40:15  profilanswer
 

oui, et préciser typename, probablement

n°1149370
Profil sup​primé
Posté le 13-07-2005 à 17:52:30  answer
 

pas besoin du typename dans ce cas-là, du mal à y croire d'ailleurs ;)

n°1149372
theshockwa​ve
I work at a firm named Koslow
Posté le 13-07-2005 à 17:55:09  profilanswer
 

j'ai fait des tests chez moi et ma version de gcc m'a réclamé un typename
 
edit :

Citation :

g++ (GCC) 3.4.2 (mingw-special)
Copyright (C) 2004 Free Software Foundation, Inc.


Message édité par theshockwave le 13-07-2005 à 17:56:00
n°1149514
++fab
victime du syndrome IH
Posté le 13-07-2005 à 21:03:40  profilanswer
 

theshockwave a écrit :

j'ai fait des tests chez moi et ma version de gcc m'a réclamé un typename


normal, c'est un nom qualifié dependant.
 

Citation :

tu fais un héritage privé :o


pourquoi pas ? Il n'y a pas besoin de plus dans son cas.
 

Code :
  1. template<class A, class B>
  2. class C
  3. {
  4. public :
  5.     typedef int D;
  6.     D* d;
  7. };
  8. template<class A, class B>
  9. class E : private C<A,B>
  10. {
  11. public:
  12.     void something()
  13. {
  14.     typename C<A,B>::D* d1 = C<A,B>::d;
  15.     typename C<A,B>::D* d2 = d1;
  16.     d1 = d2;
  17. }
  18. };


n°1149516
++fab
victime du syndrome IH
Posté le 13-07-2005 à 21:06:41  profilanswer
 

t'as le droit de protéger d et/ou le typedef aussi ...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  templates et héritage

 

Sujets relatifs
heritage de classesheritage - [résolu !]
[CSS] héritagePython for .NET et héritage
CMS/templates - Comment utiliser une BDDelphi - Heritage et TForm
[C++]Héritage de templates, g++ aime pas :(Héritage
Histoire d'heritage. 
Plus de sujets relatifs à : templates et héritage


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR