Template et fonctions virtuelles
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 :
Code:
1 2 3 4
| template <typename T> class TOTO {
public:
virtual bool myFunc (const T&) {return false;}
}; |
Soit une classe fille :
Code:
1 2 3
| template <typename T> class TUTU : public T {
// On s'en fout
}; |
Soit une classe fille de TUTU<TOTO<int>> :
Code:
1 2 3 4
| class TITI : public TUTU<TOTO<int>> {
public:
bool myFunc (const int&) {return true;}
}; |
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.
Merci d'avance pour votre aide!! ;-)