Accès "protected" interdit
Bonjour,
voici le code qui me pose problème :
Code:
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
Citation:
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