Problème c++ fonction contenant une structure

Résolu/Fermé
Pierre - 29 janv. 2005 à 19:34
Carri€ Messages postés 41 Date d'inscription lundi 19 février 2007 Statut Membre Dernière intervention 27 novembre 2007 - 25 oct. 2007 à 16:10
Je ne comprend pas :

-------------------------------
int main()
{
int test;
test=1;
void fct(int &);
fct(test);
return 0;
}

void fct(int & test)
{
}
-------------------------------

là je crée une variable test qui est intriduite dans la fonction, tout marche bien.
Mais si je le fais avec une structure :

-------------------------------
int main()
{
struct homme
{
int age;
char sexe;
};
homme test;
test.age=1;
test.sexe='m';
void fct(struct &);
fct(test);
return 0;
}

void fct(struct & test)
{

}
-------------------------------

Ca ne marche pas .
Pouvez-vous me dire pourquoi ? Où ce que j'ai mal fait ?

7 réponses

c'est coi ton compilo ??
ton environnement ??
0
je crois que ton probleme c'est que ta déclaration de fonction et t'as défintion devrait etre

void fct(struct homme &test)

et non

void fct(struct &test)

je suis pas sur mais c'est peut-etre ca...
essaye ca comme ca, et redonne nous en des nouvelles...
0
Je suis sous linux, j'utilise le compilateur g++ et j'écris avec vi .
J'ai essayé de faire ce que tu m'a dis, mais ça ne marche toujours pas .
Voici le message d'erreur que j'ai reçu :
Dans function « int main() »:
14: error: fonction non locale «void fct(main()::homme&)» utilise un type
local « main()::homme »
0
tafiscobar Messages postés 1277 Date d'inscription jeudi 7 décembre 2000 Statut Contributeur Dernière intervention 26 février 2009 177
30 janv. 2005 à 13:11
salur, en fait ta structure est locale a main et donc depuis l'extérieur personne ne peut le voir. Et donc ta declaration dehors void fct (struct homme&) ne peut marcher. Je ne sais pas si je me suis fait comprendre.

Une derniére chose, j'ai remarqué q depuis q tu programmes (en tout cas depuis q je t'ai remarque sur ce site) tu mets tes déclarations de type ds les fcts, non seulement c'est vilain et est deconseille maizs en plus on n'est plus a l'air des compilos de l'age de pierre.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
comment on peut acceder aux champs?
0
Bonjour,
Je poursuis sur la question de mary.

Dans sa fonction
void fonction (homme& )
{
}
Comment peut-on acceder aux membre de la strucuture homme?
par exemple, si je veux modifier l'age de ma structure passer en argument:

du main j'apel "fonction(test);"puis

void fonction (homme&)
{
homme.age = 26;
}
//ce qui reviendrai a faire test.age=26;
Pourquoi n'est ce pas correcte?
0
Carri€ Messages postés 41 Date d'inscription lundi 19 février 2007 Statut Membre Dernière intervention 27 novembre 2007 29
25 oct. 2007 à 16:10
//declarer la structure:
struct homme
{
int age;
char sexe;
};

//puis la fonction:
void fonction (struct homme *h);

//dans main:
struct homme Untel; //declaration de Untel de type structure homme
fonction (& Untel);


//apres le main
void fonction(struct homme *h)
{
h->age =26;
}

//ainsi age de tel est devenu 26!!

voilà c'est résolu!!!!!mais je ne suis pas auteur du message pour le poster. :o(
0