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.