Histoire d'héritage.... je crois !!

albertoro Messages postés 1 Date d'inscription dimanche 9 mars 2003 Statut Membre Dernière intervention 9 mars 2003 - 9 mars 2003 à 20:41
cs_davidsm Messages postés 35 Date d'inscription lundi 6 janvier 2003 Statut Membre Dernière intervention 12 novembre 2004 - 9 mars 2003 à 22:43
Bonjour.... voilà mon problème !!

J'ai plusieurs classes : Cylindre,Cube,Sphere,etc.... et j'aimerais pouvoir utiliser une classe "générique" OBJET me permettant d'appeler la procédure GETVOLUME du type en question... je m'explique.. en algo..

Objet[0]=Cylindre;
Objet[1]=Cube;
Objet[2]=Sphere;

et quand j'appelle
Objet[0].GETVOLUME il m'affiche le volume du cylindre .........
Objet[1].GETVOLUME -> affiche le volume du cube

Comment est-ce que je peux faire ???

merci..
Alberto.

2 réponses

cs_davidsm Messages postés 35 Date d'inscription lundi 6 janvier 2003 Statut Membre Dernière intervention 12 novembre 2004
9 mars 2003 à 22:30
Bonjour,
Si je comprends, bien tu n'as un PB d'héritage mais un PB de polymorphisme.

Tes classes Cylindre, Cube, Sphere doivent dériver (hériter) d'une classe de base Volume.
Dans cette classe base, la fonction membre GETVOLUME() doit être déclarée avec le mot clef "virtual" en C++.
virtual --- getVolume(---);
Le corps de cette fonction peut être vide.

Dans les classes dérivées de Volume : Cylindre, Cube, Sphere tu déclares et définis le corps de la fonction GETVOLUME() adapté à chaque type de voume.

--- getVolume(---);

Cylindre::--- getVolume(---){
/ / calcul du volume pour le cylindre
}

Bonne prog ++
0
cs_davidsm Messages postés 35 Date d'inscription lundi 6 janvier 2003 Statut Membre Dernière intervention 12 novembre 2004
9 mars 2003 à 22:43
Suite et remarque :
Tu écris :
Objet[0]=Cylindre;
Objet[1]=Cube;
Objet[2]=Sphere;

Si Objet est un tableau, tu ne peux pas stocker de objets de nature différente. Dans ton cas les instances : Cylindre, Cube, .. doivent être des instances de la même classe
0
Rejoignez-nous