Comment utiliser un objet sur plusieurs fonction ?
Résolu
SHINTYMAN
Messages postés
129
Statut
Membre
-
SHINTYMAN Messages postés 129 Statut Membre -
SHINTYMAN Messages postés 129 Statut Membre -
Bonjour à tous! Je me posais une simple question... Pour la création d'un programme, j'avais besoin de faire passer beaucoup d'informations sur plusieurs fonctions: j'ai donc décidé de faire deux classes, une pour le personnage et une pour son inventaire (le programme n'est pas très évolué). Comme c'est un programme de type 'livre dont vous êtes le héros', j'ai décidé de faire une fonction par "salle" du donjon de l'histoire, pour éviter l'utilisation des if et permettre de tout visiter à l'infini... Seulement voila: les objets que j'ai créé et modifié dans le int main() ne sont accessibles que dans cette fonction. Sauriez-vous comment faire pour rendre un objet utilisable sur plusieurs fonctions (sachant que la classe inventaire contient un treintaine de prototypes de methodes...) ?
Merci d'avance,
Gankachi
--
Toute réponse est une question en soit...
Merci d'avance,
Gankachi
--
Toute réponse est une question en soit...
2 réponses
-
L'idéal serait d'utiliser un passage par reference. En gros tu envoie a chaque fonction l'adresse de ton objet pour que chacune des fonctions puisse le manipuler a leur guise.
Plus d'information ici : https://openclassrooms.com/fr/courses/1894236-programmez-avec-le-langage-c#ss_part_420465
Remarque bien que tu peux dire qu'une fonction demande une reference directement dans sa definition exemple:void mafonction(int & nombre) { nombre++; }
Et dans ton mainint main() { int numero = 0; cout << numero << endl; mafonction(numero); cout << numero << endl; return 0; }
Ps: Un petit conseil performance evite les fonctions qui sont capable de boucler sur elles même sans être sur qu'elles resortiront avant de depasser la memoire que ton systeme d'exploitation peut t'allouer. -
Houla! En fait je ne savais pas que l'on pouvait passer les objet en paramètres >.> Après un tout petit peu d'expérimentation, j'ai réussi, et sans passage par référence x) (je n'en vois pas l'utilité d'ailleurs)
Merci beaucoup!