Récuperer résultat d'une fonction dans un .h

Résolu/Fermé
Maz - 7 mars 2012 à 22:08
 Maz - 9 mars 2012 à 23:27
Bonjour,


Je suis novice en c++ et je tente de récuperer une valeur retourner depuis un header.
Voici le code de mon header :

HEADER :

int affichage(int choix)
{
int resultat;

cout << "1.Connexion \n" << "2.Inscription \n";
cin >> choix;
if(choix == 1)
{
resultat = 1;
}
else
{
resultat = 2;
}
return resultat;
}


Mon but etabt de récuperer "resultat" dans le fichier .cpp pour décider de lancer la fonction Connexion ou Inscription selon le choix de l'utilisateur.

CPP :

int main(int argc, char *argv[])
{
int choix, choixFait,loginSaisi;
string nom, mdp;

affichage(choix);

/*
A partir d'ici je lance ma fonction affichage, et je souhaiterais dire que si la fonction affichage me renvoi 1 alors je lance ma fonction connexion(user,mdp);
*/


D'avance, merci.

2 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
7 mars 2012 à 22:15
Bonjour,

Ca ne sert pas du tout à ça un header. Dans le header, on ne met pas le code mais simplement la déclaration des prototypes des fonctions. D'ailleurs, on ne compile pas le header...
Il faut donc que tu déportes ton code dans un autre fichier .cpp. Et là tu appelles ta fonction après #include du header.
0
Bonsoir et merci pour ta réponse,

Donc si je comprends bien, cela me donnerais quelque chose dans ce genre :

Fonction.cpp :

int affichage(int choix)
{
int resultat;
cout << "1.Connexion \n" << "2.Inscription \n";
cin >> choix;
if(choix == 1)
{
resultat = 1;
}
else
{
resultat = 2;
}
return resultat;
}


MAIN.cpp :

int main(int argc, char *argv[])
{
int choix, choixFait,loginSaisi;
string nom, mdp;
affichage(choix);


HEADER :

#ifndef FONCTION_H_INCLUDED
#define FONCTION_H_INCLUDED

int affichage(int choix);
int connexionLogin(string nom, string mdp);

#endif // FONCTION_H_INCLUDED


C'est bien ça?
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
7 mars 2012 à 23:09
C'est bien ça dans le principe. Après, faut revoir les fonctions.
Ta fonction main n'est pas finie.
Ensuite, tu mets affichage(choix) il faudrait plutôt faire un passage par pointeur ou plus simplement par référence. Sinon ta fonction affichage ne modifiera pas la variable choix.
0
D'accord, je saisi mieux le concept, merci.

Mais j'ai du mal avec les passages par réference ... Pourrais-tu me montrer la démarche pour ma configuration actuelle?
Je veux lancer la fonction affichage(choix); et selon le resultat qu'elle retourne lancer une autre fonction, pour ce cas présent afficher un cout<<"connexion"; si ma fonction retourne 1 et cout<<"Inscription"; si elle retourne 0, c'est juste a titre d'exemple.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
8 mars 2012 à 00:26
Le prototype de la fonction doit devenir : int affichage(int &choix) tout simplement.
Pour récupérer le résultat de la fonction affichage, int result = affichage(choix);
Et après, tu peux faire des tests sur la variable result.
0
Donc c'est sur le prototype que j'initialise mon passage de référence et ensuite j'initialise la variable resultat du main à affichage. Je testerai ca demain.

En tout cas un grand merci pour ton aide, claire et précise, je saisie mieux les concepts et cela me permet d'avancer.
Merci.
0
Bonjour,

Est-ce normale que lorsque je déclare des varibles stoquant le résultat de mes fonctions, ça lance la fonction ?

Au début de mon main, je déclare :

int choix;

int main(int argc, char *argv[])
{
affichage(choix); // je lance ma fonction
int choixFait =affichage(choix);
/* J'initialise ma variable, mais ça me lance la fonction affichagechoix); une deuxième fois... et si je la déclare avant le main ou même avant ma fonction affichage(choix); cela ne change rien...*/
0