Salut,
Envoyé par
freedom144
Comment déclarer une variable globale utilisable dans plusieurs classes ?
en retravaillant ton design car c'est toi qui le dit :
Envoyé par
freedom144
j'ai besoin de variable globale (je sais c'est pas très beau)..
Mais surtout les variables globales ça couple fortement des modules qui ne devaient pas l'être, ça rend impure une fonction (c'est bien que c'est sale ), ça se marie mal avec du mutlithread, ça peut casser la réentrance d'une fonction, c'est des sources à bug, ça a de durée de vie disproportionnée, on sait (parfois) où ça commence mais on sait pas où s'est détruit etc...
Menfin, si tu veux quand même te tirer une balle dans le pied et pouvoir tirer plusieurs fois avec, voilà une possibilité :
TYPE& GetMaVariableQuiRendMonCodePasBeau();
1 2 3 4 5 6
| TYPE& GetMaVariableQuiRendMonCodePasBeau()
{
static TYPE maVariable;
return maVariable
} |
1 2 3 4 5 6 7 8
|
#include "AfficheExterne.h"
#include "maVariable.h"
void CAffExterne::View() const
{
std::cout<<"Variable Globale : "<<GetMaVariableQuiRendMonCodePasBeau()<<std::endl;
} |
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| #include <iostream>
#include "variable.h"
#include "AfficheExterne.h"
int main()
{
GetMaVariableQuiRendMonCodePasBeau()=100;
CAffExterne Call;
Call.View();
return 0;
} |
Et s'il te plait : tu me vire fissa les lignes #include <iostream> et #include "Variable.h" de AfficheExterne.h pour ne les mettre que dans le .cpp
On n'inclue dans un fichier que strictement ce dont il a besoin pour compiler. Et c'est AfficheExterne.cpp qui a besoin de iostream et variable.h pas AfficheExterne.h
using namespace std; ??? Ton clavier s'use si vite que ça ?
Et on n'oublie pas un petit tour par la F.A.Q. :
A quoi sert "using namespace std;" ?
Organisation du code source
Comment faire une pause (attendre que l'utilisateur tape une touche) ?
Partager