Bonsoir,
J'ai écrit ces trois fonctions pour tester et je voudrais savoir si elles sont bonnes et le cas contraire, quelles sont les erreurs commises. Le but est de modifier l'objet p passé en paramètre en créant un nouvel objet et en l'assignant à p.
Je vous remercie par avance de votre aide qui me permettra d'avancer.
Résultat obtenu :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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 void f(Personnage** p) { Personnage* jeanbis = new Personnage("jeanbis"); delete *p; // le delete est bon ? jeanbis->setVie(-1); *p = jeanbis; } /** * Cette fonction est fausse, right ? */ void h(Personnage& p) { Personnage hervebis("hervebis"); hervebis.setVie(-2); p = hervebis; } /** * La même que celle au dessus mais par allocation dynamique */ void hbis(Personnage& p) { Personnage* pouletbis = new Personnage("pouletbis"); pouletbis->setVie(-3); p = *pouletbis; delete pouletbis; // le delete est bon ? } /** * bidon, pour afficher */ void affiche(Personnage const& p) { p.toString(); } int main() { Personnage* jean = new Personnage("jean"); Personnage herve("herve"); Personnage poulet("poulet"); f(&jean); h(herve); hbis(poulet); cout << "jean :: 0 est devenu "; affiche(*jean); cout << "herve :: 0 est devenu "; affiche(herve); cout << "poulet :: 0 est devenu "; affiche(poulet); delete jean; }
:calim2:Code:
1
2
3 jean :: 0 est devenu jeanbis :: -1 herve :: 0 est devenu hervebis :: -2 poulet :: 0 est devenu pouletbis :: -3
