Bonjour,
Je programme un jeu d'échec qui devient de plus en plus volumineux, et je me suis dit qu'au lieu de passer un objet plateau par référence à 15 fonctions différentes dans quasiment autant de fichiers, il serait plus intéressant de le mettre dans une classe (un namespace? un fichier? bref je sais pas trop) spéciale "Global.h" qui contiendrait les variables utilisées par les fonctions éparpillées dans les fichiers.
Jusque là pas de problème, j'ai réussi ^^ ..Mais chaque fonction qui utilise les variables globales s'en fait ses propres copies réinitialisées à zéro, ce qui n'est pas du tout le comportement souhaité :-/
Finalement je suis tombé sur une solution qui règle ce dernier problème:
Mais ainsi les variables semblent n'être utilisables que dans les headers: j'ai créé une classe bidon avec .h et .cpp (en plus du main.cpp, en supprimant tous les autres fichiers du projet) en faisant un #include "Global.h", et le compilateur me dit qu'il y a une définition multiple des variables plateau..etc lorsqu'elles sont utilisées dans le .cpp, alors qu'elles peuvent être utilisées dans le .h sans problèmes. J'utilise aussi ces variables dans main.cpp et bizarrement ça fonctionne.
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
22
23
24
25
26
27
28 #ifndef _Global #define _Global /* variables globales utiles en de nombreux endroits */ #include "Coup.h" #include "Plateau.h" #include <vector> class Global { public: static Plateau plateau; static short posRoi; /* la position du roi, dependamment de la couleur */ static std::vector<Coup> setCoups; /* l'ensemble des coups possibles */ }; Plateau Global::plateau=Plateau(); short Global::posRoi=plateau.roiB; #endif
Que puis-je faire pour accéder et modifier ces variables dans un fichier .cpp?
Merci d'avance,
Benjamin.
Partager