Problème c++ fonction contenant une structure

Résolu
Pierre -  
Carri€ Messages postés 41 Statut Membre -
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. CORBnet
     
    c'est coi ton compilo ??
    ton environnement ??
    0
  2. etienne
     
    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
  3. Pierre
     
    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
  4. tafiscobar Messages postés 1281 Statut Contributeur 177
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. mary
     
    comment on peut acceder aux champs?
    0
  7. Carri€
     
    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
  8. Carri€ Messages postés 41 Statut Membre 29
     
    //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