Comment utiliser un objet sur plusieurs fonction ?

Résolu/Fermé
SHINTYMAN Messages postés 113 Date d'inscription vendredi 10 avril 2009 Statut Membre Dernière intervention 26 décembre 2014 - 8 déc. 2012 à 18:41
SHINTYMAN Messages postés 113 Date d'inscription vendredi 10 avril 2009 Statut Membre Dernière intervention 26 décembre 2014 - 11 déc. 2012 à 16:42
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



2 réponses

ReganDryke Messages postés 13 Date d'inscription samedi 8 décembre 2012 Statut Membre Dernière intervention 22 février 2013 6
9 déc. 2012 à 14:03
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 main
int 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.
0