Bonjour,

Je ne comprends pas très bien pourquoi une classe fille ne peut pas accéder à un membre protégé de sa classe mère.
Un petit exemple serra certainement plus efficace qu'un long discourt :

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
16
17
 
class Mother
{
   protected :
      Mother( long x ) : value( x ) {}
      long value;
};
 
class A : public Mother
{
   public :
      A( long x ) : Mother( x ) {}
      A & operator +=( const Mother & m ){
         value += m.value;
         return *this;
      }
};
Avec ce code, le compilateur m'insulte :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
Erreur E2247 protected.cpp 14: 'Mother::value' n'est pas accessible dans la fonction A::operator +=(const Mother &)
D'où ma question : Pourquoi ?