Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
5232 connectés 

 


Dernière réponse
Sujet : [C++] Question sur l'héritage
bkadoum 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!

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
bkadoum 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!
BENB

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!


 
:??:

bkadoum ouais j'ai un peu décrit dans le premier post mais c'est bon, j'ai reussi plus besoin d'aide. Merci!
BENB C'est quoi ton probleme ?
si au moins tu le decrivais...
bkadoum 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++?
seblamb 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 {};
bkadoum 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!
 
:)

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)