Bonjour,
svp,aidez moi.
J'ai les fichiers C1.h, C2.h , C3.h , C1.cpp, C2.cpp , C3.cpp et main.cpp. Je veux déclarer une variable globale varGlo de type int que je veux l'utiliser dans C1, C2 et C3.
Ou je dois la déclarer?
Merci d'avance.
Bonjour,
svp,aidez moi.
J'ai les fichiers C1.h, C2.h , C3.h , C1.cpp, C2.cpp , C3.cpp et main.cpp. Je veux déclarer une variable globale varGlo de type int que je veux l'utiliser dans C1, C2 et C3.
Ou je dois la déclarer?
Merci d'avance.
Salut,
La première chose à te dire, c'est LES VARIABLES GLOBALES, C'EST MAL.
Autrement dit, si tu peux t'en passer, passes t'en.
Pourrais tu déjà nous expliquer pourquoi tu crois avoir besoin d'une variable globale, histoire que nous puissions t'expliquer comment t'en passer
S'il s'avère qu'il est effectivement impossible de t'en passer, je me ferai un plaisir de répondre à ta question, car la réponse est particulièrement triviale![]()
A méditer: La solution la plus simple est toujours la moins compliquée
Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
Compiler Gcc sous windows avec MinGW
Coder efficacement en C++ : dans les bacs le 17 février 2014
mon tout nouveau blog
En fait, cette variable globale va être appeler dans C1.cpp, C2.cpp et C3.cpp. Plusieurs méthodes dans ces classes l'utilisent. Je vais l'initialiser avec une valeur que ne va pas dans mon code.
Ca, je m'en serais quand même doutéLa question que je te pose, c'est "pourquoi voudrais tu que ce soit une variable globale
"
As tu conscience que ta variable globale risque d'être modifiée par chacune de tes classes et fonctionsTe rend tu comptes que, selon ton flux d'exécution, tu ne pourras plus faire la moindre assertion en ce qui concerne cette variable globale parce que la reproductibilité du comportement ne pourra plus être assurée
Et je ne parle même pas des problèmes inhérents aux tentatives d'utilisation dans un contexte multithread
Je reprends donc ma question : dis moi ce que tu veux faire de cette variable globale, mais un peu plus clairement que "Plusieurs méthodes dans ces classes l'utilisent." pour que je puisse t'expliquer comment t'en passer![]()
A méditer: La solution la plus simple est toujours la moins compliquée
Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
Compiler Gcc sous windows avec MinGW
Coder efficacement en C++ : dans les bacs le 17 février 2014
mon tout nouveau blog
Puisque je vais utiliser sa valeur dans plusieurs classes, j'aime pas qu'à chaque fois je veux la déclarer. Aussi, a chaque exécution de mon code, je veux tester ce dernier avec une valeur différente de cette variable. Donc, je ne veux pas changer sa valeur dans toutes les classes à chaque exécution.pourquoi voudrais tu que ce soit une variable globale
Tu as bien tord conceptuellement parlant : s'il n'y a aucune raison pour que la valeur de ta variable dans une fonction de A soit identique à celle de la variable dans une fonction de B, il n'y a aucune raison de faire en sorte que A et B partagent la même valeurAs tu déjà entendu parler des constructeursAussi, a chaque exécution de mon code, je veux tester ce dernier avec une valeur différente de cette variable. Donc, je ne veux pas changer sa valeur dans toutes les classes à chaque exécution.Si tu veux définir une valeur spécifique pour une variable qui est utilisée par A et que cette même valeur doit être utilisée (mais pas partagée) par B, c'est très certainement la solution idéale. Tu pourras même en arriver à définir cette variable sur base d'une entrée de la part de l'utilisateur
Que penserais tu d'un code (fais un copier / coller et compile le, il fonctionnera) proche de
Comme tu peux le constater, je crois avoir fait exactement ce que tu voulais sans avoir à utiliser de variable globale
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59 #include <iostream> class A{ public: A(int i): i_(i){} void print() const{std::cout<<i_<<std::endl;} private: int i_; }; class B{ B(int i): i_(i){} void print() const{std::cout<<i_<<std::endl;} private: int i_; }; class C{ C(int i): i_(i){} void print() const{std::cout<<i_<<std::endl;} private: int i_; }; int main(){ int value1 = 15; int value2 = 20; { std::cout<<"dans ce groupe, toutes les valeurs sont identiques et sont égale à " value1<<std::endl A a(value1); B b(value1); C c(value1); /* création d'un premier groupe de variables */ std::cout<<"la preuve : "<<std::endl a.print(); b.print(); c.print(); } { std::cout<<"dans ce groupe, toutes les valeurs sont identiques et sont égale à " value2<<std::endl A a(value2); B b(value2); C c(value2); /* création d'un premier groupe de variables */ std::cout<<"la preuve : "<<std::endl a.print(); b.print(); c.print(); } { std::cout<<"et dans ce groupe, A et C ont disposent de la valeur "<<value1 <<"alors que B dispose de la valeur "<<value2<<std::endl; A a(value1); B b(value2); C c(value1); /* création d'un premier groupe de variables */ std::cout<<"la preuve : "<<std::endl a.print(); b.print(); c.print(); } return 0; }![]()
A méditer: La solution la plus simple est toujours la moins compliquée
Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
Compiler Gcc sous windows avec MinGW
Coder efficacement en C++ : dans les bacs le 17 février 2014
mon tout nouveau blog
Partager