Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1630 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C++] Lecture d'une variable static d'une autre classe??

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] Lecture d'une variable static d'une autre classe??

n°1111457
korben
Posté le 07-06-2005 à 16:50:36  profilanswer
 

Salut
Gros problème, pourtant simple, mais que je n'arrive pas à résoudre:
 
J'ai 2 Classes (dans 2 fichiers differents).
 
Je veux créer un variable static dans une des 2 classes, la modifier dans celle-ci, et la lire dans l'autre.
 
Voilà ce que j'ai écrit:
 
Dans ClassA.h:
...
public:
 static char test;
private:
 ...
...

 
Dans ClassA.cpp

#include "ClassA.h"
 
char ClassA::test;
 
void foo(...){
  ClassA::test=0;
   if....
  ClassA::test=1;
}

Puis, dans ClassB.h
 

#include "ClassA.h"
 
char ClassA::test;
...
//pourquoi dois-je le mettre la, et pas dans la rubrique private: ?
 
Et enfin, dans ClassB.cpp
#include "ClassB.h"
 
void bar(...){
  char val=ClassA::test;
}

 
Pourtant, malchance, cela ne marche jamais, la valeur n'est jamais modifiee et reste toujours a zero.
pourquoi?
D'avance merci


Message édité par korben le 07-06-2005 à 18:14:00
mood
Publicité
Posté le 07-06-2005 à 16:50:36  profilanswer
 

n°1111459
cesarr89
Posté le 07-06-2005 à 16:52:07  profilanswer
 

Il faut pas une méthode static pour modifier une variable static?
Simple question.....


---------------
!== Force et honneur ==!
n°1111476
Tarabiscot​e
Posté le 07-06-2005 à 17:01:02  profilanswer
 

cesarr89 : non
 
Sinon je ne comprend déjà pas pourquoi ça compile, peut-être devrais-tu aussi donner un peu plus de code (au moins rajouter un main où tu lancerais tes fonctions et montrer du code compilable si possible).

n°1111480
cesarr89
Posté le 07-06-2005 à 17:01:45  profilanswer
 

Tarabiscote a écrit :

cesarr89 : non
 
Sinon je ne comprend déjà pas pourquoi ça compile, peut-être devrais-tu aussi donner un peu plus de code (au moins rajouter un main où tu lancerais tes fonctions et montrer du code compilable si possible).


 
Ok merci


---------------
!== Force et honneur ==!
n°1111657
korben
Posté le 07-06-2005 à 18:17:34  profilanswer
 

Euh... c'est difficilement possible, mon code est reelement monstrueux, avec enormement de dependance... En fait, d'apres ce que je sais, je n'aurais pas besoin de reinitialiser la variable dans ma classe B. Il suffirait d'appeler la variable char value=ClassA::test;
 
Sauf que si je fais cela, j'ai alors l'erreur suivante, lors de la compilation (sous Visual Studio 2003 (et impossible de m'en passer))
error LNK2001: unresolved external symbol "public: static char ClassA::test" (?test@ClassA@@2DA)
 
Alors qu'avec la version postee lors de mon premier msg, je n'ai aucune erreur de compilation, mais apparemment, comme je declare test une 2eme fois dans la classB, je me retrouve avec 2 variables ayant chacune une place memoire propre...
 
Si qqn a une idee... je suis TRES interesse. Merc

n°1111691
Tarabiscot​e
Posté le 07-06-2005 à 18:56:37  profilanswer
 

Tu ne le déclares pas une deuxième fois, tu le définis.
Mais normalement lors du linkage il devrait le refuser, à moins qu'ils soit dans des namespaces différents, que le compilateur soit buggé ou que tu sois très fort pour faire du code tordu.
Mais sans voir plus de code, ça me parait difficile d'en dire plus.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C++] Lecture d'une variable static d'une autre classe??

 

Sujets relatifs
[C#] Création de packageensemble de fonction sans utiliser une classe?SOS Variable globale
[VBA Excel] lookIn peut-il être une variable ?lecture d'un fichier par block de caracteres
document.getElementsByName('nom').item(variable)... marche pas sous IEpasser une variable a une page
Changer dynamiquement des propriétés d'une classe CSSVariable par l'url de l'iframe
Variable globale !!Variable shell dans commande sql
Plus de sujets relatifs à : [C++] Lecture d'une variable static d'une autre classe??


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR