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

  FORUM HardWare.fr
  Programmation
  C++

  [Résolu] Accès à une variable statique

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu] Accès à une variable statique

n°1500319
SkippyleGr​andGourou
Posté le 08-01-2007 à 15:10:16  profilanswer
 

Salut,
 
Je comprends pas bien ce qui m'arrive : j'ai une variable statique définie dans une classe que je ne peux pas modifier. J'ai également une classe censée faire des opérations sur cette variable, ainsi qu'un programme qui doit aussi y accéder. Simplifiées au maximum, les choses se passent en gros comme ça :
 
- une classe non modifiable truc.h :

Code :
  1. #ifndef TRUC
  2. #define TRUC
  3. static int z;
  4. #endif


- ma classe essai.h :

Code :
  1. #ifndef ESSAI
  2. #define ESSAI
  3. #include "truc.h"
  4. #include <iostream>
  5. using namespace std;
  6. class essai
  7. {
  8. public:
  9.  essai(){};
  10.  void ecrit(){ cout<<z<<endl;;
  11. };
  12. #endif


- un programme principal test.C :

Code :
  1. #include "essai.h"
  2. int main()
  3. {
  4. essai H;
  5.  z=5;
  6. cout<<z<<endl;
  7. H.ecrit();
  8. cout<<z<<endl;
  9. return 0;
  10. }


Le résultat de ce programme est :

Citation :

5
0
5


D'où mon incompréhension : pourquoi ma classe essai n'a-t-elle pas accès au même contenu de z que le programme test ? Il y aurait deux objets z ??? Et si je déplace le z=5 dans le constructeur de la classe essai, le résultat est exactement le même :

Citation :

5
0
5


Quelqu'un peut m'expliquer, parce que là ça me fout dans la merde...  :sweat:  
 
Merci.
 
PS : Tiens, y'a pu de couleur dans les codes ?  :??:


Message édité par SkippyleGrandGourou le 08-01-2007 à 16:57:36
mood
Publicité
Posté le 08-01-2007 à 15:10:16  profilanswer
 

n°1500323
_darkalt3_
Proctopathe
Posté le 08-01-2007 à 15:20:16  profilanswer
 

Il est horrible ton truc.h, les variables globales, au secours quoi.
 
Met ton z en statique de classe , ca devrait déjà mieux aller.

n°1500330
SkippyleGr​andGourou
Posté le 08-01-2007 à 15:26:42  profilanswer
 

_darkalt3_ a écrit :

Il est horrible ton truc.h, les variables globales, au secours quoi.
Met ton z en statique de classe , ca devrait déjà mieux aller.

Euh... Comme j'ai dit, je peux pas modifier le truc.h...  :sarcastic:  
 

n°1500349
Taz
bisounours-codeur
Posté le 08-01-2007 à 15:47:23  profilanswer
 

normal, ton z est static, donc privé à chaque unité de compilation.

n°1500415
SkippyleGr​andGourou
Posté le 08-01-2007 à 16:46:09  profilanswer
 

Bon, j'ai réussi à contourner le problème en pointant sur la variable statique initialisée :
 
- une classe non modifiable truc.h :

Code :
  1. #ifndef TRUC
  2. #define TRUC
  3. static int z;
  4. #endif


- ma classe essai.h :

Code :
  1. #ifndef ESSAI
  2. #define ESSAI
  3. #include "truc.h"
  4. #include <iostream>
  5. using namespace std;
  6. class essai
  7. {
  8. public:
  9.          int *u;
  10.  essai(int *d){ u=d; };
  11.  void ecrit(){ cout<<*u<<endl; };
  12. };
  13. #endif


- un programme principal test.C :

Code :
  1. #include "essai.h"
  2. int main()
  3. {
  4.     z=5;
  5. essai H(&z);
  6. cout<<z<<endl;
  7. H.ecrit();
  8.     ++z;
  9. cout<<z<<endl;
  10. H.ecrit();
  11. return 0;
  12. }


Le résultat donne bien :

Citation :

5
5
6
6


Espérons que ça marche aussi dans la vraie vie...  :whistle:

Message cité 1 fois
Message édité par SkippyleGrandGourou le 08-01-2007 à 16:53:13
n°1500426
SkippyleGr​andGourou
Posté le 08-01-2007 à 16:57:04  profilanswer
 

SkippyleGrandGourou a écrit :

Espérons que ça marche aussi dans la vraie vie...  :whistle:

Ça a l'air ok.  :sol:  
 

n°1502006
Taz
bisounours-codeur
Posté le 12-01-2007 à 11:31:43  profilanswer
 

t'as rien compris. voir mon message précédent. Il n'y a aucun problème, juste une incompréhension de ta part. Et ton contournement ne contourne rien et donne le même problème : un z par unité de compilation.


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

  [Résolu] Accès à une variable statique

 

Sujets relatifs
[Résolu] setAttribute et IE7[RESOLU] proposer de telecharger les resultat d'une requete sql
Tester si une variable est numerique[Résolu] Pointeurs et fonctions
[résolu][Flash]>>appel d'un .swf avec son ASvariable php dans balise html
[Résolu] Envoyer par mail le résultat d'un formulaire fait en html[résolu] passage d'excel 2003 à excel 2000
[Résolu]Intégration d'une carte google sur mon site[Résolu] Exécuter une action en fonction du choix dans un menu
Plus de sujets relatifs à : [Résolu] Accès à une variable statique


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