[C++] Question sur l'héritage

Question sur l'héritage [C++] - Programmation

Marsh Posté le 31-07-2001 à 16:46:32    

Je fais un petit jeu en c++ et j'essaie d'organiser un peu mes classes avec l'héritage. J'ai une classe père Item qui a 2 classes filles Mover et Anime. Maintenant je veux crée une nouvelle classe fille Character qui héritera des 2 autres classes. Comment je fais ca???
Je vais essayer de dessiner un petit arbre généalogique pour que ca soit plus compréhensible:
 
       |--->Mover---|
Item---|            |--->Character
       |--->Anime---|
 
:lol: Le dessin a l'air bizarre! Vous allez me dire 'Où est l'intérêt de faire ca?' Ben comme ca je peux avoir:
-Un Item étant seulement Mover
-Un Item étant seulement Anime
-Un Item Character étant à la fois Mover et Anime!
 
:)

Reply

Marsh Posté le 31-07-2001 à 16:46:32   

Reply

Marsh Posté le 31-07-2001 à 16:55:26    

class A{};
class B : public A {};
class C : public A{};
class D : public B, public C {};
 
dans ce cas il y aurat 2 objets A dans D
 
pour n'avaoit qu'un seul objetA  
 
class A{};
class B : public A {};
class C : public A {};
class D : public B, virtual public C {};

Reply

Marsh Posté le 01-08-2001 à 15:14:32    

merci de l'info. J'ai utilisé une classe de base virtuelle mais j'ai fait de cette manière:
class A {};
class B : virtual public A {};
class C : virtual public A {};
class D : public B, public C {};
 
Ainsi ma classe D obtient une copie des membres de A tout en ayant celles de B et de C. J'ai aucune erreur lors de la compilation mais ca pose probleme quand je lance le programme. Faut peut-être faire quelque chose au niveau des constructeurs?
 
par ex:
a(args) {;}
b(args) : a(args) {;}
c(args) : a(args) {;}
et pour D???
 
Si quelqu'un a eu ce même cas avec ses classes please help me.
Sinon qui connaît un bon forum causant uniquement de C++?

Reply

Marsh Posté le 01-08-2001 à 16:09:28    

C'est quoi ton probleme ?
si au moins tu le decrivais...

Reply

Marsh Posté le 01-08-2001 à 16:17:26    

ouais j'ai un peu décrit dans le premier post mais c'est bon, j'ai reussi plus besoin d'aide. Merci!

Reply

Marsh Posté le 01-08-2001 à 16:19:46    

Citation :

J'ai aucune erreur lors de la compilation mais ca pose probleme quand je lance le programme.


 

Citation :

ouais j'ai un peu décrit dans le premier post mais c'est bon, j'ai reussi plus besoin d'aide. Merci!


 
:??:

Reply

Marsh Posté le 01-08-2001 à 17:09:57    

L'application se fermait directement à cause d'une instance qui n'avait pas été allouée avec l'opérateur new.
Comme j'avais dit le problème venait bien du constructeur. En fait il fallait appeler les 3 constructeurs des classes A, B, C pour le constructeur de D.
 
Liste des constructeurs:
 
//Constructeur de A
A()
{
pTata = new Tata();
}
 
//Constructeur de B
B() : A()
{
pTbtb = new Tbtb();
}
 
//Constructeur de C
C() : A()
{
pTctc = new Tctc();
}
 
//Constructeur de D
D() : A(), B(), C()
{
pTdtd = new Tdtd();
}
 
Comme ca lors de la construction de D, toutes les instances sont allouées et le programme tourne!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed