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

rendre accessible une variable dans toutes les classes


Sujet :

C++Builder

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 94
    Points : 53
    Points
    53
    Par défaut rendre accessible une variable dans toutes les classes
    Bonjour,

    Comment rendre une variable accessible aux autres classes ?
    extern ? (je ne trouve pas d'exemple!)

    Merci d'avance.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 43
    Points : 46
    Points
    46
    Par défaut
    slt,

    bah en fait si ta variable est un attribut d'une classe je pense que le plus simple pour la rendre accessible à l'extérieur ca serait de faire une méthode get du type

    typeDeLaVariable getVariable();

    enfin j'ai surment mal compris la question... sinon c'est ca que je ferai


    Un travail vite fait n'est pas forcément bâclé.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 94
    Points : 53
    Points
    53
    Par défaut
    j'ai une variable char MaVariable; utilisé principalement dans MaClasseA,
    mais dans MaclasseOption je peux la modifier et ya t il un moyen de la modifier autrement que de passer par MaClasseA->MaVariable, je voudrais que cette variable soit accessible sans déclarer le MaClasseA.h
    est ce possible ?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 43
    Points : 46
    Points
    46
    Par défaut
    juste une petite question... c'est quoi l'intérêt d'utiliser une variable de cette classe sans la déclarer ? tu vas en faire quoi de cette variable ?
    de plus, si tu ne déclares pas la classe qui contient cette variable elle n'existe pas donc c'est pas possible de la changer.


    Un travail mérite une rémunération proportionnelle à son utilité.

  5. #5
    Membre averti

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 351
    Points : 446
    Points
    446
    Par défaut
    Est-ce que ta variable est globale au programme, ou est-elle propre à ta classe MyClassA (i.e. il existe une instance de ta variable dans chaque instance de MyClassA) ?

  6. #6
    Membre averti

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 351
    Points : 446
    Points
    446
    Par défaut
    Bon, ben si tu ne veux pas inclure ton MaClasseA.h dans tes autres sources, tu peux essayer de mettre cette variable dans une autre classe (p.ex. ClassePubliqueA, déclarée dans un autre header) dont hérite MaClasseA. Ainsi tu inclus cet header dans ton second fichier (MaClasseOption.h). Après tu as de toute façon besoin d'au moins un pointeur sur l'instance de MyClasseA pour accéder à sa partie "ClassePubliqueA".

    Exemple (non testé):

    ClassePublique.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class ClassePublic {
      public:
         int MaVariable;
         ClassePublic() : MaVariable(0) {};
    };
    MaClasseA.h (Exemple d'initialisation de MaVariable à 10)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #include "ClassePublique.h"
    class MaClasseA : public ClassePublique {
      // Ton code sauf MaVariable puisque déjà déclarée dans ClassePublique
    };
    MaClasseOption.h (accès à MaVariable depuis un pointer)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #include "ClassePublique.h"
    class MaClasseOption {
       void AfficheMaVariable(ClassePublique* A) {
          if (A) cerr<<A->MaVariable<<endl;
       }
    };
    Tu appelles ainsi ta classe MaClasseOption avec un pointeur sur MaClasseA mais sans que MaClasseOption ne connaisse la définition de MaClasseA:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
      #include "MaClasseA.h"
      #include "MaClasseOption.h"
      void main() {
        MaClasseA *toto=new MaClasseA();
        if (toto) {
           toto->MaVariable=10;           // Donne une valeur à MaVariable
           MaClasseOption  test;
           test.AfficheMaVariable(toto); // Affiche la valeur (10)
        }
        delete toto; toto=NULL;
      }
    Je ne sais pas si c'est très clair...

    Si tu peux te contenter d'une seule instance de ta variable MaVariable partagée par tous tes objets, alors tu peux simplement la déclarer comme statique. Ainsi tu peux y accéder juste en déclarant ClassePublique et sans pointeur sur MaClasseA:
    ClassePublique.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class ClassePublic {
      public:
         static int MaVariable;
     };
    ClassePublique.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ClassePublique::MaVariable=0;  // Initialise la variable au démarrage de l'application
    MaClasseA.h est identique

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include "MaClasseA.h"
    #include "MaClasseOption.h"
    void main() {
      MaClasseA *toto=new MaClasseA();
      if (toto) {
         toto->MaVariable=10;
         MaClasseOption  test;
         test.AfficheMaVariable(); // Plus besoin du pointeur
      }
      delete toto; toto=NULL;
    }
    En fait, la variable appartient à la classe et pas à une instance. Tu pourrais donc même écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #include "ClassePublique.h"
    void main() {
      MaClasseOption test;
      ClassePublique::MaVariable=10;   // Donne une valeur à MaVariable (globale)
      test.AfficheMaVariable();           // Affiche la valeur (10)
    }

Discussions similaires

  1. Rechercher une donnée dans toutes les tables d'une BDD
    Par TheYoMan dans le forum Paradox
    Réponses: 2
    Dernier message: 23/10/2008, 20h24
  2. déclarer une variable dans tout un module
    Par Swiper dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 02/07/2007, 09h06
  3. Recherche d'un terme dans toute les class du projet
    Par aristeas dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 30/06/2007, 21h20
  4. Réponses: 5
    Dernier message: 13/07/2006, 09h44
  5. Existe t il une doc de toutes les classes dites standard?
    Par CnD dans le forum Choisir un environnement de développement
    Réponses: 5
    Dernier message: 27/11/2005, 11h53

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