Héritage des attribus en C++

guadoc Messages postés 89 Statut Membre -  
KX Messages postés 19031 Statut Modérateur -
Bonjour,

Je programme en C++.
Je crée une classe A.
Puis une classe B qui hérite de A.
Puis une classe C qui hérite de B.

Mon problème est que dans la classe C je n'arrive pas à accéder aux attributs déclarés dans la classe A (ceux-ci sont bien déclarés comme protected dans A). Or il me faut accéder à ces attributs et je n'ai pas envi d'utiliser des accesseurs.

Quelqu'un a t-il une solution pour me débloquer?

Merci d'avance pour vos contributions.

1 réponse

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    Tu as du mal t'y prendre, il faudrait voir ton code pour t'aider.

    Voici un exemple, n est protected dans A, et je m'en sers sans problème dans C.

    class A
    {
    protected:
    	int n;
    
    public:
    	A(int m)
    	{
    		n=m;
    	}
    
    	int f()
    	{
    		return n;
    	}
    };
    
    class B : public A
    {
    public:
    	B(int m):A(m){}
    
    	int f()
    	{
    		return 2*n;
    	}
    };
    
    class C : public B
    {
    public: 
    	C(int m):B(m){}
    
    	int f()
    	{
    		return -n;
    	}
    };
    
    int main()
    {
    	A a(3);
    	B b(3);
    	C c(3);
    
    	int na=a.f(); //  3
    	int nb=b.f(); //  6
    	int nc=c.f(); // -3
    
    	return 0;
    }
    0