Bonjour,

voici le code qui me pose problème :

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
18
19
20
21
22
23
#include <iostream>
 
class A
{
protected:
  void f() { std::cout << "pourtant" << std::endl; }
 
}; // class A
 
class B : public A
{
public:
  void g( A& a ) const { a.f(); }
}; // class B
 
int main()
{
  B b;
 
  b.g();
 
  return 0;
} // main()
Le message d'erreur que j'ai à la compilation est
test.cpp: In member function `void B::g(A&) const':
test.cpp:6: erreur: « void A::f() » est protégé
test.cpp:13: erreur: à l'intérieur du contexte
Je ne comprend pas pourquoi B ne peux appeler une méthode protégée de A alors que B hérite de A. Je croyais que "protected" servait justement à ce que les classes filles puissent avoir accès à ces membres. Quelqu'un pourrait-il m'expliquer ?

Merci