Bonjour,
j'ai deux classes
je voudrais créer un objet de type C dans la classe BCode:
1
2
3
4
5
6
7
8
9 class A { C *objet ; } class B { A * objet }
Version imprimable
Bonjour,
j'ai deux classes
je voudrais créer un objet de type C dans la classe BCode:
1
2
3
4
5
6
7
8
9 class A { C *objet ; } class B { A * objet }
Bonjour,
Et alors quel est le problème ? :aie:
Comment je peux le faire ? :cry:
Comme ca :
Cependant je ne suis pas certain que cela réponde à ta question...Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 class C {}; class A { C *objet; public: A() : objet(new C()) {} }; class B { A * objetA; C* objetC; public: B() : objetA(new A()), objetC(new C()) {} }; int main() { A a; B b; C c; }
C'est pas forcement ça que je cherche, je voudrais instancier un objet dans la classe B avec un passage par la classe A
J'ai trouvé la réponde
un seul appel à la classe A suffit et on peut acceder à toutes les fonctions de la classe C avec un simple objet->objet->fonctionC();
Bonjour, les new et les pointeurs sont clairement inutiles :O ;) (On n'est ni en Java, ni en C)
Pourrais-tu être plus explicite ? :koi:
Comme rien nous indique si l'instance de C doit être construite à la construction d'un A et détruite à la destruction du même A.
On ne sait pas non-plus, s'il veut changer ou non de C "en cours de route".
Donc je ne vois pas pourquoi les pointeurs et les news seraient inutiles.
L'utilisation dans le main... j'ai du mal à trouver "les delete qui vont bien".
On peut très bien changer "en cours de route" sans pointeur. Qui te dit que C n'a pas une sémantique de valeur ? (par exemple)
Complexifier inutilement le programme n'a que peu d'utilité à mes yeux :p
---
Bref, on peut se répondre stupidement et longuement de cette façon, on l'a déjà fait ;)
Je pense que les auteurs des posts précédents n'ont pas pas vraiment compris l'allocation dynamique, quand l'utiliser, comment l'utiliser, etc.
---
(Code ni testé, ni "assumé")
Code:
1
2
3
4
5
6
7
8
9
10 class B { public: A un_a; C un_c; B() : un_a(/*...*/), un_c(/*...*/) { } void f() { /* un_a.methode_de_A(); */ } };