Template et heritage

Résolu
jihane jihane Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   -  
jihane jihane Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

svp est ce que dans l'heritage si la class de base est declarer comme etant template
template<classT> NOM DE LA CLASS ,est ce que la class dérivé peut utiliser aussi le type génerique de la class de base,c'est a dire est ce que on peut utiliser le mot clé T a la place du type dans la classe dérivé et merci pour votre future réponse :)

1 réponse

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
À chaque fois que tu remplaces ton template par un type concret, tu recompiles une nouvelle classe, qui elle même va compiler sa classe mère. Au final tu n'auras que des types concrets. Donc il ne devrait pas y avoir de problème...

template <typename T>
class Mere
{
}

template <typename T>
classe Fille : public Mere<T>
{
}
0
jihane jihane Messages postés 65 Date d'inscription   Statut Membre Dernière intervention  
 
alors on peut dire que la class fille hérite les type abstrait ??? et merci pour la réponse
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Il n'est abstrait que dans ton code, une fois la compilation effectuée la classe est concrète, et il n'y a pas plus d'ambiguïté que si tu avais fait plusieurs classes mères et plusieurs classes filles avec seul le type du template qui diffère.
0
jihane jihane Messages postés 65 Date d'inscription   Statut Membre Dernière intervention  
 
OK merci ,mais si je veux declarer la classe fille comme etant générique mais avec un autre type c'est a dire pas celui de la classe mère je ferait quoi ??
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Tu ferais comme si la classe mère n'était pas template...

Je ne suis pas sûr de la syntaxe avec deux template mais sur le principe ces deux codes devraient avoir à peu près le même sens pour la classe fille.

class Mere {}

template <typename T>
classe Fille : public Mere
{}

//------------

template <typename U>
class Mere {}

template <typename T,typename U>
classe Fille : public Mere<U> {}
0
jihane jihane Messages postés 65 Date d'inscription   Statut Membre Dernière intervention  
 
Merci bcp de m'avoir aidé , et merci pour votre temps maintenant j'ai bien compris :)
0