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 :

friend sur une m�thode et pas toute une classe


Sujet :

C++

  1. #1
    tut
    tut est d�connect�
    Membre �clair�
    Avatar de tut
    Inscrit en
    Juillet 2002
    Messages
    373
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 373
    Par d�faut friend sur une m�thode et pas toute une classe
    salut,
    la clause friend donne acc�s aux membres priv�s d'une classe � une autre classe.
    J'aimerai restreindre cet acc�s � un seul membre et pas � l'ensemble des membres priv�s.
    Est-ce possible ?

  2. #2
    Expert confirm�
    Avatar de Luc Hermitte
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2003
    Messages
    5 296
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Ao�t 2003
    Messages : 5 296
    Par d�faut
    C'est possible en feintant. Exemple qui vaut un long discours.
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    /** But : tester comment mettre en oeuvre une amitié sélective.
     * ie.: faire en sorte qu'un membre m_i ne soit accessible qu'à une
     * seule fonction f_i() et que cette dernière n'ait accès qu'à m_i.
     */
     
    #include <iostream>
    #include <string>
    using namespace std;
     
    struct empty {};
     
    template <class Super>
    class Role1 : public Super
    {
        template <class T> friend void f1(T&t);
        friend void f1bis<>(Role1&);
        const string m1() { return "Méthode 1"; }
    };
     
    template <class Super>
    class Role2 : public Super
    {
        template <class T> friend void f2(T&t);
        const string m2() { return "Méthode 2"; }
    };
     
     
    typedef Role1<Role2<empty> > TYPE;
     
     
    template <class T> void f1(T&t) { cout << t.m1() << endl; }
    template <class T> void f2(T&t) { cout << t.m2() << endl; }
    /*template <class T> void f2(T&t) { cout << t.m1() << t.m2() << endl; }*/
    template <class R> void f1bis(R&t) { cout << t.m1() << endl; }
     
     
    int main (int argc, char **argv)
    {
        TYPE toto;
        f1(toto);
        f1bis(toto);
        f2(toto);
    }
    Bref, la question est : "Est-ce que cela en vaut la peine ?" Il faut voir si les r�les se regroupent bien par couches ou non.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne r�ponds � aucune question technique par le biais de ce m�dia. Et de toutes fa�ons, ma BAL sur dvpz est pleine...

  3. #3
    Membre exp�riment�
    Profil pro
    Inscrit en
    Ao�t 2003
    Messages
    247
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2003
    Messages : 247
    Par d�faut
    Pas directement je pense.

    Mais tu peux faire quelque chose de ce genre:
    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
     
     
    class B;
     
    class A
    {
    private:
       int _a;
       int _b;
     
       friend void B::set_a(&A, int);
    };
     
     
    class B
    {
       void set_a(&A a, int i) { A._a = i; }
    };

  4. #4
    tut
    tut est d�connect�
    Membre �clair�
    Avatar de tut
    Inscrit en
    Juillet 2002
    Messages
    373
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 373
    Par d�faut
    ok, merci.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [AC-2010] Enable = False sur un record et pas toute une table
    Par lefabe dans le forum VBA Access
    R�ponses: 0
    Dernier message: 10/04/2014, 12h05
  2. R�ponses: 6
    Dernier message: 31/10/2012, 16h01
  3. R�ponses: 0
    Dernier message: 24/05/2011, 11h05
  4. Utiliser une m�thode non-static dans une m�thode static
    Par mcfly37 dans le forum D�buter avec Java
    R�ponses: 3
    Dernier message: 18/08/2010, 11h41
  5. R�ponses: 3
    Dernier message: 14/03/2006, 11h34

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