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 :

Comment récupérer la valeur d'un attribut private ?


Sujet :

C++

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2004
    Messages : 185
    Points : 118
    Points
    118
    Par défaut Comment récupérer la valeur d'un attribut private ?
    Bonjour, j'ai un problème qui semble basic, regardez le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    #include <iostream>
     
    using namespace std;
    class TEST{
        public:
        TEST(){
            Alpha = 10;
        }
        private:
        int Alpha;
    };
     
    int main(unsigned  int argc, char* argv[] ) {
        TEST * TOTO = new TEST();
     
        cout << TOTO->Alpha << endl;
     
    }
    ce que je voudrais c'est récupérer la valeur de Alpha, or le compiler me dit:
    error: `int TEST::Alpha' is private
    jusqu'à maintenant, ce que je faisais c'était de laisser la variable Alpha en public, ainsi le code fonctionne, mais j'ai lu que l'encapsulation exige que les attributs/variables soient déclarées en private, alors comment résoudre ce problème en respectant cette règle ?

  2. #2
    Membre éclairé Avatar de MatRem
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 750
    Points : 693
    Points
    693
    Par défaut
    Avec un accesseur par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #include <iostream>
     
    class Test
    {
    public:
        Test()
        :_alpha(10);
        {}
     
        int getAlpha() { return _alpha; }
     
    private:
        int _alpha;
    };
     
    int main()
    {
        Test toto;
     
        cout << toto.getAlpha() << endl;
    }
    Ou à l'aide d'une constante publique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    #include <iostream>
     
    class Test
    {
    public:
        Test()
        :alpha(10);
        {}
     
        const int alpha;
    };
     
    int main()
    {
        Test toto;
     
        cout << toto.alpha << endl;
    }
    Mais tu peux aussi vouloir modifier la valeur de alpha hors classe, dans ce cas il faut utiliser la première solution et ajouter un mutateur (setAlpha(int)).

    Si le setAlpha ne fait que modifier la valeur de _alpha, sans aucun test ou autre code, ta première solution (tout en public) est tout à fait correcte.

    ps: attention au new sans delete

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2004
    Messages : 185
    Points : 118
    Points
    118
    Par défaut
    merci, ça marche comme je veux maintenant, j'ai églament noté ton PS

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 06/04/2014, 12h32
  2. [SH] Comment récupérer la valeur d un attribut dans un XML
    Par devjava83 dans le forum Shell et commandes POSIX
    Réponses: 4
    Dernier message: 24/01/2014, 09h48
  3. Comment récupérer la valeur d'un attribut HREF
    Par nkordiko dans le forum jQuery
    Réponses: 11
    Dernier message: 15/05/2013, 22h21
  4. Réponses: 3
    Dernier message: 22/01/2005, 22h06

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