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

  FORUM HardWare.fr
  Programmation
  C++

  Problème: Variable globale

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème: Variable globale

n°1378706
burtonien
Posté le 01-06-2006 à 11:57:57  profilanswer
 

Hello,
 
On m'a tellement répété de pas me servir des variables globales que j'arrive même pas à faire un truc tout con... En fait j'aimerais simplement définir une instance de ofstream dans un .hpp, et après pouvoir m'en servir dans l'ensemble des fichiers qui include ce hpp. Le problème c'est que ça déconne à l'édition des liens vu que chaque fichier qui inclut le .hpp définit cette variable (ce qui est normal tout de même !). J'avais essayé via le mot clé static, mais apparemment y'a un instance pour chaque fichier incluant le .hpp....
Donc voila, y'a t'il une solution *magique* pour que ça passe à l'édition des liens, et que l'instance manipulée soit la même partout ?  
Merci d'avance !!

mood
Publicité
Posté le 01-06-2006 à 11:57:57  profilanswer
 

n°1378709
_darkalt3_
Proctopathe
Posté le 01-06-2006 à 11:59:14  profilanswer
 

la solution : le pattern Singleton

n°1378721
burtonien
Posté le 01-06-2006 à 12:10:28  profilanswer
 

Et c'est possible de réaliser ça sans implémenter une nouvelle classe ?

n°1378731
skelter
Posté le 01-06-2006 à 12:22:45  profilanswer
 

c'est normal, pourquoi tu definis un truc plusieurs fois alors qu'il ne doit l'etre qu'une fois (erreur à l'edition des lien) ? et pourquoi tu specifie static en global un objet (non constant) que tu veux unique pour chaque source ?
Aussi l'utilisation de static en dehors d'une fonction est depreciee, tu peux utiliser un namespace anonyme qui est semantiquement equivalent
 
La solution c'est de ne mettre qu'une definition (dans un source) et de mettre la declaration dans un header.
 

Code :
  1. // header
  2. extern std::ofstream file;
  3. // source
  4. std::ofstream file(...);


 
 

n°1378984
burtonien
Posté le 01-06-2006 à 15:18:04  profilanswer
 

C'est bon j'ai essayé et ça marche!  J'y vois un peu plus clair avec les globales now, merci beaucoup.

n°1884490
o_BlastaaM​oof_o
Posté le 14-05-2009 à 11:09:30  profilanswer
 

Petit déterrage, j'ai moi aussi un souci avec des variables globales. On trouve des solutions diverses et variées, j'ai choisi la suivante qui ne fonctionne pas visiblement :
 - dans un .h, je déclare "extern int toto;"
 - dans un des .cpp, j'inclus le .h en question et je définis la variable "int toto = 300;"
 - dans les autres .cpp, j'inclus également le .h
mais là problème, à la compilation, j'obtiens des "undefined reference to toto" dans tous ces autres .cpp.
 
Une explication ?

n°1884496
Joel F
Real men use unique_ptr
Posté le 14-05-2009 à 11:19:58  profilanswer
 

pas utilisé de globale :/
on fait de l'objet punaise ...

n°1884498
o_BlastaaM​oof_o
Posté le 14-05-2009 à 11:20:41  profilanswer
 

Certes mais admettons que j'ai quand même envie de me servir d'une variable globale ? :o

n°1884499
Joel F
Real men use unique_ptr
Posté le 14-05-2009 à 11:21:14  profilanswer
 

c'ets pour faire quoi ?
 
Une globale, c'ets l'aveu d'un échec de design propre. Donc explique à quoi elle te sert et on va t'expliquer comment faire autrement

n°1884501
o_BlastaaM​oof_o
Posté le 14-05-2009 à 11:24:40  profilanswer
 

C'est un code de simulation et mon maillage (initialisé au début de la simu et jamais modifié ensuite) a certaines caractéristiques : nombre de mailles, pas en espace, type de condition de bord, etc. Bref, y en a toute une tripotée. Et il se trouve que chaque fonction a besoin de connaître chacune de ces caractéristiques. Et donc ça m'emmerde de les passer en argument.

mood
Publicité
Posté le 14-05-2009 à 11:24:40  profilanswer
 

n°1884504
Joel F
Real men use unique_ptr
Posté le 14-05-2009 à 11:29:33  profilanswer
 

bah tu fais une classe parametres qui contient ça et s'iunitialise prorpement au debut de ton main et que tu passes en seul argument de tes classes.

n°1884506
o_BlastaaM​oof_o
Posté le 14-05-2009 à 11:32:21  profilanswer
 

Et y a pas moyen d'éviter de passer systématiquement une instance de cette classe en argument ?

n°1884579
Joel F
Real men use unique_ptr
Posté le 14-05-2009 à 13:35:26  profilanswer
 

singleton mais ça sert à rien :¶


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

  Problème: Variable globale

 

Sujets relatifs
probleme de select sous IE[PHP] probleme fsockopen
Problème de transmission des donnéesProblème avec la lib GD
variable dans un lienProbleme separation ; dans excel pour csv
probleme de pure débutantproblème de modification d'une variable globale xsl
Probleme de variable globale.variable globale, problème de link
Plus de sujets relatifs à : Problème: Variable globale


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