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.

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
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;
}
Résultat obtenu :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
jean :: 0 est devenu jeanbis :: -1
herve :: 0 est devenu hervebis :: -2
poulet :: 0 est devenu pouletbis :: -3