Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

variable globale dans classe statique

5 réponses
Avatar
Karim Yahioun
Bonjour,
pourriez vous m'aider sur la facon de declarer une variable globale
statique dans une classe statique (dans le .h) sans avoir lors de la
compilation une erreur du type "undefined reference...".

merci d'avance

5 réponses

Avatar
Karim Yahioun
Karim Yahioun wrote:
Bonjour,
pourriez vous m'aider sur la facon de declarer une variable globale
statique dans une classe statique (dans le .h) sans avoir lors de la
compilation une erreur du type "undefined reference...".

merci d'avance



En fait, j'ai trouvé une premiere solution qui serait de mettre toutes
mes variables statiques directement dans le .cpp de la classe statique.
Ca a l'air de fonctionner...mais peut-on faire mieux?

Avatar
Vincent Richard

En fait, j'ai trouvé une premiere solution qui serait de mettre toutes
mes variables statiques directement dans le .cpp de la classe statique.
Ca a l'air de fonctionner...mais peut-on faire mieux?


Si tu parles de faire ça :

// .hpp
class A
{
static int var;
};

// .cpp
int A::var = 5;

on ne peut pas faire mieux puisque c'est la solution utilisée
habituellement (et je suis presque sûr que c'est la seule possible).
Sauf si tu initialise directement la variable :

// .hpp
class A
{
static int var = 5;
};

Mais ça n'est possible que pour des types entiers.

Vincent

--
vmime, une bibliothèque C++ sous licence GPL pour parser et générer
des messages au format MIME : http://www.sourceforge.net/projects/vmime/

Avatar
Karim Yahioun
Vincent Richard wrote:


En fait, j'ai trouvé une premiere solution qui serait de mettre toutes
mes variables statiques directement dans le .cpp de la classe statique.
Ca a l'air de fonctionner...mais peut-on faire mieux?



Si tu parles de faire ça :

// .hpp
class A
{
static int var;
};

// .cpp
int A::var = 5;

on ne peut pas faire mieux puisque c'est la solution utilisée
habituellement (et je suis presque sûr que c'est la seule possible).
Sauf si tu initialise directement la variable :

// .hpp
class A
{
static int var = 5;
};

Mais ça n'est possible que pour des types entiers.

Vincent



Merci, j'ai aussi trouver un article qui me disait que c'etait tout
simplement impossible.

Merci en tout cas de ta reponse


Avatar
Michel Michaud
Dans news:, Karim
pourriez vous m'aider sur la facon de declarer une variable globale
statique dans une classe statique (dans le .h) sans avoir lors de la
compilation une erreur du type "undefined reference...".


Il faut la définir dans un fichier source aussi. Si tu veux
éviter ça, la solution est un singleton simple, que tu peux mettre
dans un .h seulement, genre

inline int& MaVar()
{
static int maVar=0;
return maVar;
}

Ensuite tu utilises MaVar() au lieu de maVar dans ton code...

--
Michel Michaud
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/

Avatar
Michel Michaud
Dans news:3ffeddfd$0$7144$, Vincent
// .hpp
class A
{
static int var = 5;
};

Mais ça n'est possible que pour des types entiers.


Non, en plus, il faut que la variable soit const et il est possible
que la définition soit nécessaire aussi...

--
Michel Michaud
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/