IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

[POO] Utiliser un membre static ailleurs ou ?


Sujet :

C++

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 9
    Points : 9
    Points
    9
    Par défaut [POO] Utiliser un membre static ailleurs ou ?
    Salut à tous,

    Je ne suis pas encore un expert en POO et je bute sur un problème qui m'empêche pas mal d'avancer. Je souhaite définir quelques objets en static dans une classe principale (class MMain) et pouvoir les utiliser dans d'autres classes. En fait mon doute réside là dedans, peut-on vraiment utiliser des membres static d'une classe dans une autre ?

    J'aimerais ne pas avoir à passer mes objets aux constructeurs à chaque fois que j'en ai besoin ailleurs, si static ne me permet pas de faire ça, quelle autre solution est adaptée ?

    Voici un petit bout de code pour illustrer mon problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    ---- MMain.h
    namespace ES {
      class MMain {
      public:
        static MObject *a;
        static MObject *b;
        static MObject *c;
        MBox *box;
      };
    }
    ---- MMain.cpp
    namespace ES {
      // constructeur de MMain
      MMain::MMain() {
        MMain::a = new MObject();
        MMain::b = new MObject();
        MMain::c = new MObject();
        box = new MBox();
      }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ---- MBox.cpp
    namespace ES {
      class MMain; // Je mets ça car sinon le compilateur me dit que MMain n'est pas déclaré
      MBox::MBox() {
        MMain::a->move(); // Ici erreur de compilation : incomplete type 'ES::MMain' used in nested name specifier
      }
    }
    Voilà en gros pouvoir utiliser a, b et c où je veux dans mon programme car ce sont des variables dont j'ai besoin très souvent.

    Merci d'avance pour votre aide.

  2. #2
    Membre émérite
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Points : 2 799
    Points
    2 799
    Par défaut
    Au final, ce que tu veux, ce sont de belles variables globales .

    Oui, ça marchera en les mettant en static dans la classe.

    Si elles ne changent jamais, tu aurais intérêt à passer soit par des constantes (type simple), soit par un pattern singleton et des accesseurs en const (autre types).

    Si elles changent, tu vas avoir des problèmes en multithread.

  3. #3
    Futur Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    Bon un ami m'a trouvé la solution, je n'avais pas inclut le fichier MMain.h dans le fichier MBox.cpp et donc il trouvait pas la définition de la classe, honte à moi En plus je ne l'ai pas copié sur ce post, vous pouviez pas le voir...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. utiliser les méthodes d'un membre static d'une classe
    Par tonio_a_588 dans le forum C++
    Réponses: 4
    Dernier message: 06/01/2011, 21h44
  2. Utilisation d'un membre static dans le constructeur
    Par samitriani dans le forum C++
    Réponses: 3
    Dernier message: 10/03/2008, 18h12
  3. [POO] Définition des variables membre static
    Par AurélienB dans le forum Langage
    Réponses: 13
    Dernier message: 18/02/2008, 11h39
  4. Réponses: 5
    Dernier message: 09/12/2007, 00h16
  5. [JSTL] Utilisation d'un membre static ?
    Par santana2006 dans le forum Taglibs
    Réponses: 4
    Dernier message: 04/04/2006, 11h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo