CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[c++] Question variable global

dragone169
dragone169
Niveau 8
01 mars 2012 à 00:24:20

Bonjour, c'est encore moi.

Je me demandais comment fallait-il pour utiliser des variables globales pour qu'elle soit utilisable pour tout les objets.

Je crois avoir lu qu'il fallait utilisé le mot-clé extern devant la déclaration, mais je ne sais pas comment la récupérer par la suite (dans le main ça va...mais pas dans les objets).

Alors si vous pouviez m'aider/ me donner des bons lien qui expliquerait le tout je vous en remercie.

godrik
godrik
Niveau 30
01 mars 2012 à 00:35:56

tand un des fichiers .cpp:

int foo;
dans les autres;
extern int foo;

chris_27
chris_27
Niveau 10
01 mars 2012 à 00:35:57

Si ma mémoire est bonne, tu la déclares avec le mot clé extern dans tous les Classes.hpp où tu en as besoin (ou dans un global.hpp que tu inclues dans ces fichiers), et tu fais la vraie déclaration (sans extern donc) du début du fichier principal.

chris_27
chris_27
Niveau 10
01 mars 2012 à 00:36:47

pff... grillé pour une seconde. La vie est parfois dure. :(

dragone169
dragone169
Niveau 8
01 mars 2012 à 00:49:08

Alors si je comprends bien.

dans le global.cpp:

int lol=100;

dans l'objet:

extern int lol;

lol aura alors la valeur de 100 dans l'objet?

chris_27
chris_27
Niveau 10
01 mars 2012 à 01:10:10

« lol aura alors la valeur de 100 dans l'objet? » :d) pas vraiment, non (si tu utilises ta classe ailleurs, il peut très bien y avoir une autre variable globale lol avec une autre valeur). Mais ça fera effectivement ce que tu veux.

dragone169
dragone169
Niveau 8
01 mars 2012 à 03:46:25

Ha ouais, c'est bon.

Merci

Nevdelothion
Nevdelothion
Niveau 4
01 mars 2012 à 09:37:35

Juste un petit commentaire, je ne sais pas trop pourquoi tu souhaites utiliser une variable global mais en lisant ton message « lol aura alors la valeur de 100 dans l'objet? » je me demande si par hasard ce que tu cherches c'est pas en fait un moyen pour avoir une variable "constante" que tu utilises partout et dont tu veux pouvoir changer la valeur facilement?

Si c'est le cas alors il vaudrait mieux faire un global.h avec dedans : #define MA_CONSTANTE (valeur)
Et du coup inclure le .h dans les cpp qui utilisent cette constante.

Mjonir
Mjonir
Niveau 26
01 mars 2012 à 20:32:48

Encore mieux pour être plus propre selon moi: créer une classe abstraite Singleton (y a des codes tout faits très simple) et créer un Const_Manager qui hérite de Singleton.

Par la suite partout dans ton code tu pourras effectuer Const_Manger::getInstance().getConst("lol") ;)

Petit lien: http://tfc.duke.free.fr/coding/singleton.html - Voir "Singleton - modèle Singleton applicable à n'importe quelle classe." au milieu de l'article.

godrik
godrik
Niveau 30
01 mars 2012 à 20:57:43

Abstraction: methode employee par des programmeurs zele pour transformer une operation simple et rapide en operation complexe et lente.

chris_27
chris_27
Niveau 10
01 mars 2012 à 21:36:51

Nevdelothion: une variable globale c'est plus sûr qu'une macro. Ton préprocesseur C/C++ ne fera aucune vérification de type, et pourra produire du code syntaxiquement correct, mais complètement faux à cause de cast implicites.

Mjonir : ça, c'est pas propre, c'est STUPIDE. Désolé de le dire comme ça, mais ça fait un mois que je suis sûr un code qui abuse de ce genre de techniques et crois-moi, j'en ai plein le dos des ces conneries. Du code (parfois beaucoup) plus long, sémantiquement moins fort (parce que certains idioms se contournent même sans le vouloir), parfois incompréhensible (parce quand tu tombes sur une technique farfelue qui utilise une fonctionnalité avancée du C, pas clair que tu comprennes le truc du premier coup), non merci !
À coté de ça, je tiens à préciser que j'ai vu dans le fameux code des vecteurs passés par copie, et une absence récurrente de const. Bref, faites du code simple, propre et solide, et surtout jeter moi ces idioms à la poubelle lorsqu'ils ne sont pas strictement nécessaires. :oui:

Pseudo supprimé
Pseudo supprimé 01 mars 2012 à 22:02:57

Oula je suis d'accord, bien trop lourd... Une bonne petite macro et hop! On s'y retrouve facile et ça casse pas les couilles :oui:

godrik
godrik
Niveau 30
01 mars 2012 à 22:15:33

Comme indique par chris, une macro ca n'a pas de type. Une variable globale et constante fait mieux l'affaire.

dragone169
dragone169
Niveau 8
01 mars 2012 à 22:31:18

@Nevdelothion

Ha oui, je viens de tester, et effectivement c'est très proche de ce qui me fallait.Merci

Je vous remercie de tous vos réponses/commentaire.

Pseudo supprimé
Pseudo supprimé 01 mars 2012 à 22:32:33

Ha oui certes....Bpn après seulement visuellement parlant je sais pas.

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment