Bonjour,

Supposons que l'on soit dans le cas suivant :
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; // #
    }
};
Ce code ne compile pas, gcc lance l'erreur à la ligne # :
error: 'truc' was not declared in this scope
Pour que ça compile, il faut préciser à chaque fois Mere<T>::truc au lieu de truc.

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-> ?