Héritage et composition

naail Messages postés 3 Date d'inscription lundi 19 mai 2008 Statut Membre Dernière intervention 12 novembre 2010 - 12 nov. 2010 à 23:46
JulSoft Messages postés 354 Date d'inscription dimanche 3 juin 2001 Statut Membre Dernière intervention 11 mars 2013 - 13 nov. 2010 à 14:05
Bonjour,

j'ai un petit soucis, je vais essayer d'imager mon problème:

J'ai une classe mère A et A1 et A2 qui hérite de cette classe.

J'ai ensuite une classe mère B qui possède un attribut qui a comme type la classe A.Les classes B1 et B2 hérite de la classe B.

Mon soucis est que j'ai une méthode dans ma classe B1 et B2 dont l'attribut qui a comme type la classe A peut soit être de type A1 ou A2 suivant une certaine condition.

Comment puis-je gérer ceci?


Merci de vos réponses

1 réponse

JulSoft Messages postés 354 Date d'inscription dimanche 3 juin 2001 Statut Membre Dernière intervention 11 mars 2013
13 nov. 2010 à 14:05
S' j'ai bien compris ton problème, tu es dans ce cas:

class A{
   [...]
};

class A1 : public A{
   [...]
};

class A2 : public A{
   [...]
};


class B{
   [...]
};

class B1 : public B{
   public T f(A a);
   [...]
};

class B2 : public B{
   public T f(A a);
   [...]
};


et tu aimerais pouvoir écrire
A1 a1();
A2 a2();

B1 b1();

b1.f(a1);
b1.f(a2);


Ca ressemble a un problème typique de polymorphisme...

Sauf erreur, il n'y a pas de solution directe, par contre c'est tout à fait possible au moyen d'un pointeur...

Dans ce cas, le prototype de f doit être:

public T f(A* a);


qui peut recevori des pointeurs vers des objets de type A ou tout type héritant de A. Il faut par contre faire attention si tu veux récupérer l'objet de base (i.e. caster ton pointeru vers un A1* ou un A2*) que le pointeur pointe vers un objet du bon type...
0
Rejoignez-nous