Bonjour je faisais des exo pour me conforter dans la compréhension du C++ quand je suis tombé sur ces 2 exos que je n'arrive pas à résoudre :
Le programme plante et le pb se situe au niveau du destructeur de Truc qui va allé dans le destructeur de machin et juste en sortant du destructeur de machin il plante.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 #include <iostream.h> class Machin { public : int bidule ; Machin(int b) { cout << « ++ Machin normal » << endl ; bidule = b ; } ~Machin() { cout << « -- Machin normal » << endl ; } } ; class Truc { public : Machin * machin ; Truc(Machin * m) { cout << « ++ Truc normal » << endl ; machin = m ; } ~Truc() { cout << « -- Truc normal » << endl ; if (machin != NULL) delete machin ; machin = NULL ; } } ; void main() { Machin m(1) ; Truc x(&m); }
Le pourquoi, je pense le connaitre.En effet, il supprime truc mais aussi machin donc quand le destructeur de machin essaye de détruire machin il tombe sur du vide.Me suis je tromper. Comment parer le problème?
Le deuxième problème vient de ce bout de code :
g++ ne compile pas le programme C++ suivant :
Pourquoi ? Rajouter l’instruction convenable pour qu’il soit compilable par g++.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 class Poule { public : Oeuf * monOeuf ; void maMethode() { ; } } ; class Oeuf { public : Poule * maPoule ; void maMethode() { ; } } ; void main() { Poule * p = new Poule(); Oeuf * o = new Oeuf(); p->monOeuf = o; o->maPoule = p; p->maMethode(); o->maMethode(); }
Alors la je vois pas du tout le problème.
Merci d'avance pour tout explication et résolution.
Partager