Partage
  • Partager sur Facebook
  • Partager sur Twitter

Utiliser des fonctions dans des structures

Sujet résolu
    7 mai 2008 à 18:47:25

    Bonsoir à tous,

    J'avais lu que l'on pouvait utiliser des fonctions directement dans des structures.
    Je cherche donc à faire ceci, car pour une de mes structures, j'ai besoin que cette fonction soit lancé au moment de la création de la structure afin de faire un certain nombres de traitement avant.

    Et surtout, si j'ai besoin autre part dans le programme de la même structure, je serais donc sur de retrouver les valeur de bases don j'ai besoin.

    Merci d'avance à celui qui pourra m'indiquer comment faire.
    • Partager sur Facebook
    • Partager sur Twitter
    Mon site internet : http://www.chrissoftware.fr.nf
    Anonyme
      7 mai 2008 à 19:23:45

      struct nom_struct
      {
         nom_struct(){/*initialisation la*/};
      };
      

      en fait la structure en C++ c'est la meme chose qu'une classe, a part que les membre sont public par defaut et que les fonction virtuel n'existe pas.
      Va voir le cour de mateo...
      • Partager sur Facebook
      • Partager sur Twitter
        7 mai 2008 à 19:25:22

        struct == class! (aux accessibilités près ; aucune autre différence, même pour virtual) => FAQ C++ de développez.
        • Partager sur Facebook
        • Partager sur Twitter
        C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
        Anonyme
          7 mai 2008 à 19:26:54

          j'avais lu que les struct n'avais pas de vtable^^
          • Partager sur Facebook
          • Partager sur Twitter
            7 mai 2008 à 19:31:20

            Merci de ton aide Youyou.
            Lmghs, je vois pas le rapport, j'ai pas demandé la diff mais comment faire pour les struct avec une fonction dedans, la FAQ C++ de developpez.com ne donne pas l'info je suis allé voir.

            EDIT: Question Youyou, il vaut mieux que mes structures soient au format C++(par exemple avec les types string) ou format C(type char* plutôt que string) ?
            • Partager sur Facebook
            • Partager sur Twitter
            Mon site internet : http://www.chrissoftware.fr.nf
              7 mai 2008 à 19:39:22

              Citation : Jérémie Belpois

              Lmghs, je vois pas le rapport


              le rapport c'est que les classes sont equivalentes aux structures, a peu de chose près (post de lmghs)

              Citation : Jérémie Belpois

              comment faire pour les struct avec une fonction dedans


              comme les classes

              Citation : Jérémie Belpois

              la FAQ C++ de developpez.com ne donne pas l'info


              si

              Citation : Jérémie Belpois

              il vaut mieux que mes structures soient au format C++(par exemple avec les types string) ou format C(type char* plutôt que string) ?


              ca dépend de ce que tu veux faire, mais en C++ les std::string sont préférables (sauf dans certain cas ou les std::string sont à "bannir")
              • Partager sur Facebook
              • Partager sur Twitter
                7 mai 2008 à 22:25:15

                Chlab_lak,
                La FAQ C++ de developpez.com ne parle pas des structures mais des classes.
                Et l'utilisation n'est pas la même car dans les classes, soit tu met toute ta fonction dans la déclaration de la classe, soit tu y met juste le prototype, et tu déclares ta fonction de manière externe en mettant le nom de la classe suivant de deux deux-points(:) avant le nom de ta fonction.

                Hors cette dernière ne fonctionne pas pour les structures, c'est pourquoi j'étais venu demandé ;)

                Pour les histoires de string, je suis en C++ donc j'utilise plutôt les string que les char*, maintenant la question était plutôt par rapport au fait que mon code sera librement accessible et donc une personne peut vouloir reprendre une ou plusieurs de mes structures dans son propre programme mais en C et non en C++.

                Et par rapport à cela, je me demandais juste si il valait mieux dans ce cas là que mes structures soient directement compatible avec le C ou laissez la personne devoir faire la modification dans la structure(c'est surtous qu'une personne connaissant pas du tous le C++, aurait du mal à faire cela).

                Ou alors il y a peut être la possibilité de dire si c'est du C++ alors tu utilises telle structure, sinon si c'est du C tu utilises une autre, dans ce cas là, je peux l'écrire en double afin qu'il y ai la compatibilité.

                Mon soucis est donc par rapport à cette question, de permettre le moins de modification possible de l'header pour ceux voulant reprendre mon projet ou une partie ;)
                • Partager sur Facebook
                • Partager sur Twitter
                Mon site internet : http://www.chrissoftware.fr.nf
                  7 mai 2008 à 22:28:41

                  Citation : Jérémie Belpois

                  Chlab_lak,
                  La FAQ C++ de developpez.com ne parle pas des structures mais des classes.
                  Et l'utilisation n'est pas la même car dans les classes, soit tu met toute ta fonction dans la déclaration de la classe, soit tu y met juste le prototype, et tu déclares ta fonction de manière externe en mettant le nom de la classe suivant de deux deux-points(:) avant le nom de ta fonction.



                  Si, si, ça marche.

                  Hors cette dernière ne fonctionne pas pour les structures, c'est pourquoi j'étais venu demandé ;)

                  Citation : Jérémie Belpois


                  Pour les histoires de string, je suis en C++ donc j'utilise plutôt les string que les char*, maintenant la question était plutôt par rapport au fait que mon code sera librement accessible et donc une personne peut vouloir reprendre une ou plusieurs de mes structures dans son propre programme mais en C et non en C++.



                  sauf que si tu mets une fonction dans une structure, il ne pourra plus l'utiliser en C, car ce concept n'existe pas dans ce langage.

                  </citation>
                  Et par rapport à cela, je me demandais juste si il valait mieux dans ce cas là que mes structures soient directement compatible avec le C ou laissez la personne devoir faire la modification dans la structure(c'est surtous qu'une personne connaissant pas du tous le C++, aurait du mal à faire cela).
                  Ou alors il y a peut être la possibilité de dire si c'est du C++ alors tu utilises telle structure, sinon si c'est du C tu utilises une autre, dans ce cas là, je peux l'écrire en double afin qu'il y ai la compatibilité.</citation>

                  Dans ce cas, alors faut tout écrire en C. Puisque tout ce qui est en C est utilisable en C++ et que le contraire est faux.

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
                    7 mai 2008 à 22:35:33

                    @youyou, le document tu as as lu est faux -- ou alors tu es tombé sur un document pointu qui parle des structures POD.

                    @Jérémie, le rapport c'est que tu mets ce que tu veux dans la struct. Par contre, je déconseille vivement les char*.


                    Citation : Jérémie Belpois

                    Chlab_lak,
                    La FAQ C++ de developpez.com ne parle pas des structures mais des classes.


                    http://cpp.developpez.com/faq/cpp/?pag [...] _class_struct

                    Autrement dit tout ce qui parle des class, parle des struct.

                    Citation : Jérémie Belpois

                    Pour les histoires de string, je suis en C++ donc j'utilise plutôt les string que les char*, maintenant la question était plutôt par rapport au fait que mon code sera librement accessible et donc une personne peut vouloir reprendre une ou plusieurs de mes structures dans son propre programme mais en C et non en C++.


                    Cela demande d'isoler et définir des zones d'interface qui permettent de communiquer entre les deux langages. C'est possible, mais il y a des règles à respecter. Personnellement, je considère que c'est s'enquiquiner pour rien.
                    Dans un premier temps, je te dirai d'ignorer le C.
                    • Partager sur Facebook
                    • Partager sur Twitter
                    C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.

                    Utiliser des fonctions dans des structures

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown