Variables globales et namespaces

Signaler
Messages postés
185
Date d'inscription
samedi 21 mai 2005
Statut
Membre
Dernière intervention
16 juillet 2016
-
Messages postés
185
Date d'inscription
samedi 21 mai 2005
Statut
Membre
Dernière intervention
16 juillet 2016
-
Bonjour,

Je cherche une solution pour définir des variables globales dans des namespace. J'ai pensé à un truc qui serait assez génial mais je n'arrive pas à l'implémenter et du coup, je me demande si c'est possible.
mon architecture d'application est basée sur les namespace telle que :
fichier mypoject_applicationa_a.h
namespace MyProjet{
       namespace ApplicationA{
               class MyAppAWindow{
               };
                class MyAppAVarType{


                };
       }
}
fichier mypoject_applicationa_b.h
namespace MyProjet{

       namespace ApplicationB{
                class MyAppBWindows{
                };
                class MyAppBVarType{

                };

       }

}

L'idée serait de définir une classe statique dans le namespace "parent" MyProject telle que :
fichier mypoject_applicationa_global.h
#include mypoject_applicationa_a.h
#include mypoject_applicationa_b.h

namespace MyProjet{


       class Global{
               static ApplicationA::MyAppAVarType * varA;
               static ApplicationB::MyAppAVarType * varA;


       }


}

et de faire en sorte que toutes les classes qui ont besoin des variables globales héritent de cette classe, et puisse même dériver la class Global pour ajouter leur propre variables globales propres à leur namespace, telle que :
fichier mypoject_applicationa_a.h
#include mypoject_applicationa_global.h
namespace MyProjet{

       namespace ApplicationA{

               class MyAppAWindow: public MyProjet::Global{

               };

                class MyAppAVarType{



                };

       }

}

fichier mypoject_applicationa_b.h
#include mypoject_applicationa_global.h

namespace MyProjet{


       namespace ApplicationB{
                class Global: public MyProjet::Global{
                      static MyAppBVarType myOwnGlobalVar;
                }

                class MyAppBWindows:public MyProjet::ApplicationB::Global{

                };

                class MyAppBVarType{


                };


       }


}

est-ce possible ? comment faire ???
J'ai pas mal d'erreurs  de namespace non déclarés, de variables dont le type n'est pas défini, ...
Je pense qu'il y a une méthode pour déclaré les namespaces et class avant d'inclure les fichiers qui en ont besoin puis ensuite les définir mais je trouve pas trop, je me perds....
Genre :

fichier mypoject_applicationa_global.h
namespace MyProjet{





       class Global;

}
#include mypoject_applicationa_a.h
#include mypoject_applicationa_b.h


namespace MyProjet{



       class Global{

               static ApplicationA::MyAppAVarType * varA;

               static ApplicationB::MyAppAVarType * varA;



       }



}

fichier mypoject_applicationa_b.h
namespace MyProjet{




       namespace ApplicationB{
             class MyAppBVarType;
       }
}
#include mypoject_applicationa_global.h



namespace MyProjet{



       namespace ApplicationB{

                class Global: public MyProjet::Global{

                      static MyAppBVarType myOwnGlobalVar;

                }

                class MyAppBWindows:public MyProjet::ApplicationB::Global{


                };


                class MyAppBVarType{



                };



       }



}

Si quelqu'un peut me dire comment faire, ça serait super super cool
Ou me donner une méthode pour faire l'équivalent....
Great Thanks

RV

L'intelligence est la chose la mieux répartie chez l'homme, car quoi qu'il en soit pourvu, il a toujours l'impression d'en avoir assez. "Descartes"

1 réponse

Messages postés
185
Date d'inscription
samedi 21 mai 2005
Statut
Membre
Dernière intervention
16 juillet 2016

Ok, bon au final, mon code fonctionne plus ou moins.
il manquait juste l'initialisation des variables juste avant le main :
#include mypoject_applicationa_global.h
MyProjet::MyAppAVarType *varA=NULL;
MyProjet::MyAppBVarType *varB=NULL;

void main(){
}

Par contre, l'histoire de dériver toutes mes classes avec Global ne semble pas fonctionner.

il me met, "error: invlaid use of undefined type 'struct MyProjet::Global'" et "error: forward declaration of 'struc MyProjet::Global'"
Il le voit en tant que struct ??!!??
Comment faire fonctionner cela  en héritage multiple ??

Merci
L'intelligence est la chose la mieux répartie chez l'homme, car quoi qu'il en soit pourvu, il a toujours l'impression d'en avoir assez. "Descartes"