Membre static d'une classe : undifined reference to
ctx_man
Messages postés285Date d'inscriptionmardi 28 décembre 2004StatutMembreDernière intervention20 janvier 2013
-
29 mars 2006 à 12:15
cs_lalebarde
Messages postés6Date d'inscriptionsamedi 6 octobre 2007StatutMembreDernière intervention 8 octobre 2007
-
6 oct. 2007 à 14:20
Salut !
Je ne comprend pas mon erreure...
class A
{
private: static long var;
[....]
public: [....]
static void setVar(long val);
};
void A::getVar(long val)
{
var = val; //Undifined reference to 'A::var'
}
Je voudrai bien savoir comment acceder a cette variable static ! En fait, c'est surtout sont adresse qui m'interesse (donc &var). J'ai tester plein de syntaxe mais aucune ne fonctionne, il me dit toujours que le membre static n'est pas définie...
Le travail c'est la santé, ne rien faire c'est la préservé !!!
ctx_man
Messages postés285Date d'inscriptionmardi 28 décembre 2004StatutMembreDernière intervention20 janvier 20133 29 mars 2006 à 14:39
Effectivement ca fonctionne, cependant j'ai un autre probleme
maintenant et la je capte pas du tout. Il dit qu'il y as une
declaration multiple de ma variable static. La premiere declaration
cest effectivement moi, la deuxieme ca vien de je ne sais ou... il me
dit que c'est a la ligne 2497 d'un certain fichier :
"$(Chemin_projet)\..\lib\gcc\mingw32\3.4.4\..\..\..\..\include\c++\3.4.4\bits\local_facets.tcc
Deja ce chemin est special puisque .\lib\gcc\mingw32\3.4.4\..\..\..\..\ -> .\
Et en plus j'appelle pas ce fichier. Et pour finnir j'ai beau changer
le nom de la variable en mettant des truc super long qui veulent rien
dire, ca ne change rien a l'erreure (meme pas la ligne). Pourtant mon
header de la class commence par
#ifndef __NOM_DE_MA_CLASS_H__
#define __NOM_DE_MA_CLASS_H__
et finnit par
#endif
Donc je ne devrait pas avoir de multiple declarations.....
Bref, je capte rien...
Le travail c'est la santé, ne rien faire c'est la préservé !!!
cs_lalebarde
Messages postés6Date d'inscriptionsamedi 6 octobre 2007StatutMembreDernière intervention 8 octobre 2007 6 oct. 2007 à 14:20
Je viens d'être confronté au même problème. Je sais bien que ce thread est vieux, mais il n'ai jamais trop tard pour les autres.
En fait, le piège est que la déclaration de la variable static (long A::var = 0;) dois être faite dans le .cpp, et non dans le .h
Sinon, le compilateur râle au cas où le .h fait l'objet d'include dans plusieurs .cpp (double déclaration). Il peut même signaler des erreurs abhérantes. C'est du vécu ! Et j'ai galéré un moment avant de m'en sortir.