malkommalkom
Messages postés36Date d'inscriptionmercredi 1 novembre 2000StatutMembreDernière intervention 7 novembre 2010
-
7 nov. 2010 à 12:34
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023
-
8 nov. 2010 à 10:02
Bonjour a tous
Bon alors voila :
j'ai une classe :
template <typename TDATA>
class maClasse
{
public:
maClasse();
~maClasse();
};
template <typename TDATA>
class maSousClasse, public maClasse<TDATA>
{
public:
maSousClasse();
~maSousClasse();
};
Je creer ma librairie, tout compile.
J'utilise ma librairie dans un main pour la tester
maSousClasse monTest;
//action de test......
et j'ai :
Undefined reference to maClasse::maClasse()
Undefined reference to maClasse::~maClasse()
Undefined reference to maSousClasse::maSousClasse()
Undefined reference to maSousClasse::~maSousClasse()
j'ai bien sur vérifié que les .cpp compiler dans la librairie et c'est le cas.
N'aurais -t-on donc pas le droit de faire herité d'une classe en lui donnant (a la mere) le template de la fille?
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013 7 nov. 2010 à 18:48
Salut,
Premiere chose, si tu donnes un template a ta classe mere pourquoi veux tu donner ce meme template a la classe fille ?
Deuxieme chose, revoi la manière dont tu écris ton héritage.
l'héritage s'écrit avec : et non pas avec une virgule, sauf pour l'initialisation des paramètres.
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023123 8 nov. 2010 à 10:02
Il est possible de "splitter" une implémentation de header de sa définition, indirectement.
On utilise généralement un .hxx inclut par le .hh, regarde dans mes sources je le fais.
De même, un template n'étant qu'un code crée au moment de son appel, on ne peux le mettre dans une bibliothèque (librairie == erreur de traduction), et on donc doit distribuer les headers contenant des templates.
________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfoliohttp://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question