IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++/CLI Discussion :

Déclaration variables globales


Sujet :

C++/CLI

  1. #1
    Membre habitué
    Inscrit en
    Janvier 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 7
    Par défaut Déclaration variables globales
    Bonjour,

    s.v.p je voudrai savoir comment déclarer une variable qui peut être utiliser dans plusieurs fenêtres,est ce qu'il y a un moyen pour le faire comme un module au vb ?

    Merci.

  2. #2
    Membre éclairé
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Juin 2008
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 522
    Par défaut
    La meilleur facon à mon avis c'est de déclarer les variables globales dans un fichier à par (pas forcément)... Pour pouvoir les réutiliser il faut les redéclarer en début de chaque fichier qui les utilise comme ça:

    extern type nom;

    ça fonctionne aussi pour les classes les fonctions. Le seul problème c'est que c'est long à faire.

    Mise à jour:
    C'est impossible pour les variables managés

    raphchar

  3. #3
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Franchement, en C++/CLI, je conseillerais plutôt d'en faire des variables statiques d'une classe managée, plutôt que des variables globales libres.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Membre éclairé
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Juin 2008
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 522
    Par défaut
    Franchement, en C++/CLI, je conseillerais plutôt d'en faire des variables statiques d'une classe managée, plutôt que des variables globales libres.
    c'est vraiment pas une mauvaise idée. Pour un programme que j'avais fais, j'avais fait une classe contenant tout ce qui concernait le document (fonctions et variable).

    Si tu ne sais pas comment faire tu peux me demander

    raphchar

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 243
    Par défaut
    Citation Envoyé par raphchar Voir le message
    c'est vraiment pas une mauvaise idée. Pour un programme que j'avais fais, j'avais fait une classe contenant tout ce qui concernait le document (fonctions et variable).

    Si tu ne sais pas comment faire tu peux me demander

    raphchar
    Bonjour raphchar,

    En cherchant, je suis tombé sur ce fil qui correspond parfaitement à ce que je cherche.
    Je suis volontiers preneur de quelques explications.

    Un très court exemple de classe par exemple.

    Bonne soirée.

  6. #6
    Membre éclairé
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Juin 2008
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 522
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    class Donnees
    {
    public:
       static int frequence; //Définitons dans la classe
       static float ratio;
    };
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    //...
    if(Donnees::frequence==0)return; //appel à la variable
    static rend la variable globale, c'est à dire indépedante des objets d'un classe. L'appel au membre Classe::Variable retourne donne une valeur indépendante de tout objet de la classe créée, donc ici toute les données (frequence et ratio) se comportent comme des variables globales. L'attribution se fait de la même manière
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Donnees::Ratio=Width/Height;
    L'inconvéniant, c'est que ça ne fonctionne que pour du code managé, l'avantage c'est qu'il ne faut pas redéfinir les variables à chaque entête de document.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 243
    Par défaut
    Salut Raphchar,


    Je crois avoir compris.

    Cela ressemble à des choses que je connais.

    Merci beaucoup

    Bon, je ne trouve plus l'icone "Résolu" , je vais me faire engueuler par les administrateurs !

  8. #8
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 472
    Par défaut
    Les variables globales, c'est très mauvais.

    Les statics ne sont pas globales car il y a une instance des statiques par AppDomain de votre application.

    Si vous les considérez comme des globales, vous allez être surpris.

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 243
    Par défaut
    Citation Envoyé par bacelar Voir le message
    Les variables globales, c'est très mauvais.
    Bonjour Bacelar,


    Il y a des applications où certains variables ont besoin d'être visibles pratiquement partout.

    Quelle solution doit on utiliser pour ne pas utiliser de variables globales?

    Bonne journée.

  10. #10
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Hors de .Net, une variable "de classe" n'est qu'une variable globale déguisée.

    Dans .Net, ça devient plus compliquée à cause des AppDomain (qui sont plus ou moins une sous-division d'un processus; il peut y avoir plusieurs AppDomain dans un seul processus): Les AppDomain étant censés être séparés, les variables statiques des classes managées sont bien séparées d'un AppDomain à l'autre. Mais si je comprends bien Bacelar, les variables vraiment globales (et peut-être les variables statiques des classes non-managées) sont communes à tout le processus, ce qui est dangereux.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  11. #11
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 472
    Par défaut
    Une variable globale n'est jamais justifiée.

    Il existe des Design Pattern, comme le Singleton, qui sont bien plus propre que les variables globales.

    Le choix est fonction du type d’utilisation de la variable et surtout pas en fonction de son espace de validité.

  12. #12
    Membre éclairé
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Juin 2008
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 522
    Par défaut
    Citation Envoyé par jlg_47 Voir le message
    Bon, je ne trouve plus l'icone "Résolu" , je vais me faire engueuler par les administrateurs !
    Normal le post n'est pas de toi!!

    Si tu souhaite eviter les variables globales comme te le cosseille certaines personnes, utilises les pointeurs: classe x avec les variables, objet y de la classe x, passage du pointeur de y dans le constructeur d'autres classe.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Déclaration variable globale
    Par sky88 dans le forum JSF
    Réponses: 1
    Dernier message: 03/10/2011, 08h29
  2. déclaration variables globales
    Par chester119 dans le forum VC++ .NET
    Réponses: 0
    Dernier message: 31/03/2009, 22h40
  3. Déclaration d'une variable Globale
    Par peregna2007 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 16/07/2008, 11h24
  4. Déclaration Variable Global
    Par b_reda31 dans le forum C++Builder
    Réponses: 7
    Dernier message: 30/10/2007, 21h21
  5. déclaration d'une variable global
    Par piotrr dans le forum Général Python
    Réponses: 6
    Dernier message: 04/04/2007, 18h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo