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 ?
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
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 :)
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 :)
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 :)