Utilisation membre static?

arbixy Messages postés 2 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 22 octobre 2008 - 19 oct. 2008 à 19:22
GurneyH Messages postés 6 Date d'inscription mardi 14 octobre 2008 Statut Membre Dernière intervention 24 octobre 2008 - 24 oct. 2008 à 05:41
Bonjour,




J'ai un souci de linking avec un morceau de code, et je vous avoue que je n'ai pas la moindre idée de pourquoi.


Voila le code incriminé :





//A.h



class A



{
public:
   static int a;
   static void f();
};

//A.cpp

void A::f()
{
   a = 2;
};







Lorsque je compile le tout, un problème au linking se présente, pretextant qu'il lui est impossible de trouver le symbole "a".

Par contre, si j'implémente la méthode f dans la classe A directement ou si je l'implémente dans le fichier cpp avec le mot-clé inline alors tout se passe bien.




Quelqu'un saurait me dire pourquoi ? Moi je seche.

4 réponses

SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
19 oct. 2008 à 20:36
class A


{
public:
   static int a;
   static void f();
};

//A.cpp

int A::a;

void A::f()
{
   a = 2;
}




C++ (@++)<!--
0
GurneyH Messages postés 6 Date d'inscription mardi 14 octobre 2008 Statut Membre Dernière intervention 24 octobre 2008
20 oct. 2008 à 14:18
Salut,

   L'exemple de SAKingdom te montre bien la solution.
 
   Cependant, pour être plus précis, voici une petite précision concernant l'initialisation des variables statiques.

    -L'initialisation est impérativement unique.
    -L'initialisation se trouve dans le fichier d'implémentation de la classe (.cpp), en rappelant tous les éléments du contexte (type de variable et classe d'appartenance.)
 
   C'est le pourquoi de:

        //A.cpp

              int A::a;

a++

  
0
arbixy Messages postés 2 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 22 octobre 2008
22 oct. 2008 à 11:46
Merci messieurs, c'est beaucoup plus clair ;)

C'est etrange que cette information ne figure nulle part dans mon livre "complet" sur le C++ ou sur le net, ceci dit.
0
GurneyH Messages postés 6 Date d'inscription mardi 14 octobre 2008 Statut Membre Dernière intervention 24 octobre 2008
24 oct. 2008 à 05:41
Salut,

    sissi, tu peux trouver des infos sur le net concernant l'emploi de static.

    Vas voir sur devellopez.com, c'est académique, mais ça reste buvable...

a++
0
Rejoignez-nous