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++ Discussion :

Problème de Portée de Variable


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Par défaut Problème de Portée de Variable
    J'ai 2 unités.
    Une principale et une secondaire.
    Dans la secondaire j'ai une variable initialisée à 3 par exemple et j'ai une fonction A de type void.
    Dans le premier je fais appel à cette fonction qui est censé changer la valeur de la variable.
    Or : la variable garde sa valeur d'origine alors qu'on la changée de valeur.

    Donc pour vous éclairer :

    Cpp de l'unité principale
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #include "main.h"
    #include "secondaire.h"
     
    void B()
    {
        A();
        cout << variable; // ne vous fiez pas au cout car c'est avec le debuggeur que le probleme est visible //
    }
    le header de l'unité principale n'a rien à voir avec le problème.

    Header de l'unité secondaire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    int variable=3;
    void A();
    Cpp de la seconde unité
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #include "secondaire.h"
     
    void A()
    {
       variable=22;
       return;
    }


    Resultat : variable = 3

    Problème bizarre. Si quelqu'un a la solution... qu'il n'hésite pas.

  2. #2
    Membre émérite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Par défaut
    Resultat : variable = 3

    Problème bizarre. Si quelqu'un a la solution... qu'il n'hésite pas.
    Pas du tout bizarre!
    Dans le cas que tu présentes, "variable" semble être utilisée comme une variable globale (vu la manière de la déclarer...), quoiqu'il manque le "extern" à mon avis.
    De plus, l'utilisation de variable globale est en principe à éviter, saif si un réel intérêt.

    Sinon, tu devrais faire une fonction A() qui prend comme paramètre un pointeur sur "varaible".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include "secondaire.h"
     
    void A(int *p)
    {
       *p=22;
       return;
    }
    Dans l'unité principale:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #include "main.h"
    #include "secondaire.h"
     
    void B()
    {
        int variable = 3;
        A(&variable);
        cout << variable; 
    }

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Par défaut
    Je n'avais pas du tout réfléchi à cette manière
    Donc ce n'est pas vraiment un problème de portée
    Merci beaucoup à toi homeostasie

  4. #4
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Ou avec des références.

  5. #5
    Membre éclairé Avatar de vdumont
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 510
    Par défaut
    +1, dans un cas simple comme celui la tu peux tout simplement passé la variable par référence et la modifier. Ca t'évite de jouer avec les pointeurs inutilement.

  6. #6
    Membre émérite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Par défaut
    +1, dans un cas simple comme celui la tu peux tout simplement passé la variable par référence et la modifier. Ca t'évite de jouer avec les pointeurs inutilement.
    Oui, j'y ai pensé aussi par référence. Il est vrai que j'ai lu à quelques reprises qu'il vaut mieux utiliser au maximum le passage par références que par pointeurs.
    J'ai du mal à distinguer exactement le pourquoi d'utiliser plus la référence que le pointeur.
    D'un coté le pointeur pointe sur l'adresse de la variable pointée et de l'autre la référence est la variable. Ca ressemble a un pointeur constant, même si il ne faut pas raisonner comme cela.
    De souvenir, je crois que "la référence" permet d'éviter la copie de la variable passée en paramètre de fonction.

Discussions similaires

  1. Problème de portée de variable globale
    Par draudrau dans le forum C
    Réponses: 16
    Dernier message: 06/11/2007, 09h27
  2. Problème de portée de variables (VBS)
    Par befast dans le forum Windows
    Réponses: 0
    Dernier message: 18/09/2007, 09h40
  3. [Mail] problème de portée de variables
    Par xclam dans le forum Langage
    Réponses: 2
    Dernier message: 12/04/2007, 09h35
  4. [VBA-E] Problème de portée de variable [débutant]
    Par vivelesgnous dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 01/03/2006, 18h28
  5. [XSL]Problème de portée des variables
    Par djulesp dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 17/09/2004, 10h34

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