Héritage des attribus en C++

Fermé
guadoc Messages postés 70 Date d'inscription mercredi 26 mai 2010 Statut Membre Dernière intervention 21 octobre 2011 - 15 janv. 2011 à 18:17
KX Messages postés 16741 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 30 mai 2024 - 15 janv. 2011 à 19:36
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

KX Messages postés 16741 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 30 mai 2024 3 016
15 janv. 2011 à 19:36
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