Bonjour,
Je voulais vous faire part d'un petit casse-tête auquel je me retrouve confronté et, plutôt que d'en faire des cauchemars, je sollicite vos compétences pour savoir s'il existe une solution simple. Voici le contexte :
Soit une classe mère :
Soit une classe fille :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 template <typename T> class TOTO { public: virtual bool myFunc (const T&) {return false;} };
Soit une classe fille de TUTU<TOTO<int>> :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 template <typename T> class TUTU : public T { // On s'en fout };
Tout compile bien, sauf qu'à l'exécution, quand j'appelle TITI:myFunc, çà exécute TOTO:myFunc. Je ne peux passer myFunc en virtuelle pure dans TOTO car dans ce cas (logique!) erreur de compilation il y a vu que le compilo s'attend à voir définie cette méthode dans TUTU. Ce qui me laisse perplexe quand même (je pense que c'est à cause de la "templatisation"), c'est que la surcharge ne puisse pas "bypasser" un niveau d'héritage.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 class TITI : public TUTU<TOTO<int>> { public: bool myFunc (const int&) {return true;} };
Merci d'avance pour votre aide!! ;-)
Partager