Bonjour,
Supposons que l'on soit dans le cas suivant :
Ce code ne compile pas, gcc lance l'erreur à la ligne # :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 template <typename T> class Mere { public : int truc; }; template <typename T> class Fille : public Mere<T> { void uneFonction() { ++truc; // # } };
Pour que ça compile, il faut préciser à chaque fois Mere<T>::truc au lieu de truc.error: 'truc' was not declared in this scope
J'ai donc deux questions :
- pourquoi ?
- comment éviter d'avoir à préciser Mere<T>:: devant chaque référence à un membre (ou fonction membre) de la classe de base ? Doit-on ajouter une directive using dans la classe dérivée pour chaque membre / fonction membre de la classe de base ? Ou utiliser this-> ?
Partager