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 :

fonctions amies


Sujet :

C++

  1. #1
    Membre confirmé
    Inscrit en
    Août 2003
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 128
    Par défaut fonctions amies
    Bonjour,
    est ce qu'une fonction amie en c++ peut acceder au donnees membres prives d une classe ?
    par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class test{
    private x:
    friend void f(){
    x=2}
    };
    Merci

  2. #2
    Membre éclairé Avatar de gelam
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2003
    Messages : 69
    Par défaut
    Bonjour,
    La relation d'amitié est faite pour ça. Mais n'oublie pas que ta fonction reste une fonction globale et ne dispose pas de pointeur this.

    Donc ton code devient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    class test{ 
      friend void f(test& obj){ obj.x=2;} 
    private : 
      int x ;
    };

  3. #3
    Membre chevronné Avatar de xxiemeciel
    Inscrit en
    Juin 2005
    Messages
    371
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 371
    Par défaut
    Salut,

    je me demandais l'interet de mettre une fonction amie dont le code est dans la classe ...

    j'aurais plutot vu ca comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    void f(Objet& obj)
    {
            obj.x = 2;
    }
     
    class Objet
    {
        friend void f(Objet& obj);
        private:
             int x;
    }
    J'ai jamais utilisé cette fonctionnalité du C++ donc ce post est plus un genre de question qu'autre chose lol.

    XXiemeciel

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 106
    Par défaut
    mais c'est exactement comme ca que ca marche.
    Pour les fonctions globales uniquement.

    Pour les méthodes d'objet, il faut définir la classe en tant qu'amie.
    Ainsi si B est amie de A, toute les méthodes de B ont accès aux variables membres de A

  5. #5
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par xxiemeciel
    je me demandais l'interet de mettre une fonction amie dont le code est dans la classe ...
    On ne peut trouver la définition que par la recherche des noms dépendants.

    Pour ceux qui sont intéressés, je suggère d'utiliser groups.google et de cherche le message flititflb0.fsf@sel.cmla.ens-cachan.fr.

Discussions similaires

  1. Réponses: 4
    Dernier message: 03/03/2008, 16h57
  2. fonctions amies C++
    Par hamma2 dans le forum C++
    Réponses: 2
    Dernier message: 27/11/2007, 14h15
  3. Fonction ami + template
    Par zenux dans le forum Langage
    Réponses: 8
    Dernier message: 08/12/2006, 15h59
  4. fonctions amies
    Par Vips dans le forum C++
    Réponses: 10
    Dernier message: 24/03/2006, 04h41
  5. [C++] Fonction amie vituelle dans une classe ?
    Par Bob.Killer dans le forum C++
    Réponses: 11
    Dernier message: 04/12/2005, 13h42

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