initialiser une variable static

initialiser une variable static - C++ - Programmation

Marsh Posté le 26-10-2006 à 20:55:01    

Bonjour !
   J'ai un petit problème, j'arrive pas a initialiser une variable static. Voilà ce que je fais :
 
fichier.h

Code :
  1. class A
  2. {
  3. public:
  4.    static int i;
  5.    void setI(int n);
  6. };


fichier.cpp

Code :
  1. void A::setI(int n)
  2. {
  3.    A::i = n;
  4. }


et là le compilateur me sort :  

Citation :

error LNK2019: unresolved external symbol "private: static int ModelInstance::i" (?i@ModelInstance@@0HA) referenced in function "public: static void __cdecl ModelInstance::Init(class boost::shared_ptr<class Render> )" (?Init@ModelInstance@@SAXV?$shared_ptr@VRender@@@boost@@@Z)


Bon une petite recherche Google m'a permis de voir qu'en réalité il fallait faire ça :

Code :
  1. void A::setI(int n)
  2. {
  3.    int A::i = n;
  4. }


mais alors là le compilateur me sort :

Citation :

'ModelInstance::i' : definition or redeclaration illegal in current scope


ce que je trouve logique, mais alors du coup, je sais plus quoi faire...
 
si quelqu'un peut m'aider ça serait sympa...
 
Merci :)

Reply

Marsh Posté le 26-10-2006 à 20:55:01   

Reply

Marsh Posté le 26-10-2006 à 21:07:15    

Salut,
 
Pour affecter n à ta variable, c'est bien la première méthode. Ce qu'il manque c'est la définition initiale.
Ca te donne quelque chose comme:

Code :
  1. int A::i = 0;


au début de ton fichier source (après l'include de a.h et en dehors d'une méthode de A).


---------------
.
Reply

Marsh Posté le 26-10-2006 à 21:10:25    

Ok, Merci !
 
je dormirais moins bête ce soir :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed