Problème c++ fonction contenant une structure

Résolu
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

  1. c'est coi ton compilo ??
    ton environnement ??
    0
    1. 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
      1. 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
        1. Contributeur
          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
          1. comment on peut acceder aux champs?
            0
            1. 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
              1. //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