Partage
  • Partager sur Facebook
  • Partager sur Twitter

Meilleur manière d'inclure des variables ?

Enfin la votre

Sujet résolu
    1 mars 2008 à 23:34:10

    Bonsoir à tous,

    Voilà je m'attaque à un petit projet et je me demandais qu'elle est la/votre meilleur manière d'inclure des variables.

    Un genre de constantes.h du TP sokoban du cours C sauf avec des variables.

    Un fichier contenant (par exemple) des variables TAILLE_BLOC mais pas en define ni en constante, (qu'on puisse les modifier et donc l'utilisateur à sa guise changer la taille de ce qui est affiché.

    Pour l'instant je fais un #include dans le main, mais bien évidement mes variables sont donc pas globales (ca serait pratique) et surout ca fait bourrin (à mon goût).

    Merci
    • Partager sur Facebook
    • Partager sur Twitter
      1 mars 2008 à 23:49:17

      Oui voilà elles sont globales, c'est bourrin, mieux vaut créer des structures à mon avis.
      • Partager sur Facebook
      • Partager sur Twitter
        3 mars 2008 à 10:26:04

        Tu fais du C++ utilises les variables constantes encapsulées dans une classe.
        • Partager sur Facebook
        • Partager sur Twitter
          3 mars 2008 à 21:16:29

          @Apobis : non justement elles ne sont pas globales, vu que je les inclus dans la fonction main.

          @ledemonboiteux : variables en public ou privée ?

          Merci à vous deux
          • Partager sur Facebook
          • Partager sur Twitter
            3 mars 2008 à 21:20:42

            En vrai, que l'on mette les variables dans une structure, dans une classe, dans un namespace ou n'importe où, ça reste des variables globales.

            On peut souvent s'en tirer avec des singletons (un peu plus beau que les globales), ou en revoyant son architecture de classes pour utiliser au mieux les design patterns existants.
            • Partager sur Facebook
            • Partager sur Twitter
              3 mars 2008 à 21:31:43

              Ce qui peut se faire par exemple est de créer une classe "Gestionnairee de constantes" (par exemple Singleton) dont tu crées un seul objet global au départ de ton appication.
              Puis, pour accéder à une constante, tu n'auras qu'à demander à la classe de t'en fournir la valeur.
              Tu peux par exemple de cette manière charger les constantes depuis un fichier ou changer leur valeur en cours de route via la classe.
              • Partager sur Facebook
              • Partager sur Twitter
              Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
                3 mars 2008 à 21:55:19

                Désolé je suis plutot débutant donc j'ai un peu de mal à comprendre.

                Qu'est ce que sont les singletons ? j'ai un peu cherché sur wikipedia mais ca ma plus embrouillé.

                Si je résume c'est une classe avec accesseur etc.., à n'inclure qu'une seule fois (et vérifier qu'elle n'est pas instanciée une nouvelle fois), c'est ca ?

                Par contre :

                Citation : ornithorynx


                On peut souvent s'en tirer avec des singletons (un peu plus beau que les globales), ou en revoyant son architecture de classes pour utiliser au mieux les design patterns existants.


                Je m'excuse mais je croit que je n'ai pas (encore) le niveau pour comprendre/traduire.

                Merci
                • Partager sur Facebook
                • Partager sur Twitter
                  3 mars 2008 à 22:02:29

                  Les design patterns (dont le singleton fait partie), c'est une manière de définir ta classe selon un modèle préexistant (pattern = modèle).

                  Le singleton, c'est un design pattern qui permet à une classe de n'avoir qu'une et une seule instance d'elle-même, accessible de partout (par exemple MaClasseSingleton::instance() ).
                  • Partager sur Facebook
                  • Partager sur Twitter
                    4 mars 2008 à 10:53:17

                    tu devrais faire des recherches sur les varaible static a mon avis c'est ta solution : tu les encapsule dans une calsse et tu n'inclue cette classe que dans les endroits ou t'en a besoin.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      4 mars 2008 à 17:06:00

                      Citation : ledemonboiteux

                      tu devrais faire des recherches sur les varaible static a mon avis c'est ta solution : tu les encapsule dans une calsse et tu n'inclue cette classe que dans les endroits ou t'en a besoin.


                      Quelle différence entre ça, un namespace ou des globales ?
                      • Partager sur Facebook
                      • Partager sur Twitter
                        4 mars 2008 à 18:28:01

                        Tes variables globales sont de portée globale. C'est pas une super idée car tu risques d'avoir des conflits de nom si quelqu'un a eu l'idée de nommer sa variable comme la tienne.


                        Tes variables dans un namespace sont de portée le namespace, mais si tu veux tu peux t'en servir ailleurs avec nomdunamespace::nomdelavariable, ou tu peux utiliser using pour les utiliser directement, c'est une très bonne idée.

                        si tu mets tout en static dans une classe tu peux hériter, faire des statics private avec un accès par accesseurs, et ajouter des méthodes. Je ne sais pas si c'est utile pour toi.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          17 mars 2008 à 21:24:58

                          Ok, merci à tous j'ai finit par comprendre comment utiliser le Singleton.


                          Par contre si je puis faire une suggestion au rédacteur du tuto, préciser pour les débutants (moi) que :

                          - Si on veut séparer en header/.cpp, il ne faut pas mettre que le prototype des fonctions static dans le .h, mais la fonction en entier (ici c'est getInstance / kill je croit)

                          - De même que

                          Citation : Pas de titre

                          CSingleton *CSingleton::singleton = 0;

                          est alors à insérer dans le fichier .cpp associé

                          C'était pas évident pour moi.


                          Merci à tous.
                          • Partager sur Facebook
                          • Partager sur Twitter

                          Meilleur manière d'inclure des variables ?

                          × 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