OVH Cloud OVH Cloud

(J'ai reçu) template en héritage

12 réponses
Avatar
meow
Bonjour,

Je cherche a comprendre comment fonctionne l'h=E9ritage dans le cadre
des templates. En particulier, je m'interroge sur la mani=E8re d'appeler
le constructeur de la classe de base.
Dans l'exemple suivant, g++ (GCC) 3.3.5 (Debian 1:3.3.5-13) me gronde
entre autre parce que :
herit.C:16: error: class `B<T>' does not have any field named `A'

template <class T>
class A{
protected:
T a,b;
public:
A(T aa,T bb):a(aa),b(bb){;};
void print(){std::cout<<a<<" "<<b<<std::endl;};
};

template <class T>
class B:public A<T>{
T c;
public:
B(T aa,T bb,T cc):A(aa,bb),c(cc){;};
void print(){std::cout<<a<<" "<<b<<" "<<c<<std::endl;};
};

Pour lurker ce newsgroup depuis quelques temps, je me suis dit que peut
etre c'=E9tait du au fait qu'il le compilo ne comprenait pas que mon
constructeur etait une fonction template... J'ai donc sorti le code de
A(...) =E0 l'ext=E9rieur de la classe et cela ne change rien... Des
explications ?

2 réponses

1 2
Avatar
kanze
Fabien LE LEZ wrote:
On 21 Sep 2005 12:05:16 +0200, Gabriel Dos Reis
:

Je suis bien au Texas en ce moment mais la machine que
j'utilise pour lire fclc++ se trouve en France.


T'as de sacrément bons yeux !


Bof. Je suis bien dans la région parisienne, mais la machine que
j'utilise pour lire fclc++ se trouve en Californie (je crois) --
chez Google.

--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34


Avatar
meow
Bon, bein tant qu'à niveler le rapport signal/bruit : Moi aussi
j'utilises google, et je découvre donc, tel Monsieur Jourdain, que ma
machine à lire les news est en californie :)
1 2