Comment modifier les objets passés en paramètres ?
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:
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:
1 2 3
| jean :: 0 est devenu jeanbis :: -1
herve :: 0 est devenu hervebis :: -2
poulet :: 0 est devenu pouletbis :: -3 |
:calim2: