wxDev.fr, le portail francophone consacré à wxWidgets ! ( The french portal for wxWidgets )  
Esp. membre
Recheche rapide



Recherche avancée
Statistiques
Membres inscrits :2359

Membres en ligne : 0
Invités en ligne : 2

Valid XHTML 1.0 Transitional

Valid CSS2

Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Développement C/C++
» Probleme classe amie
Conversation (Résolue) : Probleme classe amie
30-06-2010 16:46:46  Probleme classe amie #1
yannp (Membre)
Inscrit le : 02-06-2010
Messages: 61
Snippets: 0
Tutoriels: 0
Hors ligne
Bonjour,

J'ai 2 classes et je souhaiterais que l'une ait accès à toutes les données et méthodes de l'autre. Donc elle doit être "amie".

.h

Code:

 
class A
{
    friend class B;
 
    public:
       void fonction ();
}
 
class B
{
    int a;
}
 

.cpp

Code:

 
void A::fonction ()
{
   a=1;
}
 

J'ai une erreur à la compilation : a was not declared in this scope

Merci d'avance
Yann
30-06-2010 17:05:47  Re: Probleme classe amie #2
Sem (Membre)
Inscrit le : 31-05-2008
Messages: 64
Snippets: 0
Tutoriels: 0
Hors ligne
bonjour,
as tu essayé

Code Cpp:

void A::fonction ()
{
   B::a = 1;
}
30-06-2010 17:14:28  Re: Probleme classe amie #3
yannp (Membre)
Inscrit le : 02-06-2010
Messages: 61
Snippets: 0
Tutoriels: 0
Hors ligne
Oui j'ai essayé, mais il me répond que B has not been declared.
30-06-2010 17:25:40  Re: Probleme classe amie #4
Sem (Membre)
Inscrit le : 31-05-2008
Messages: 64
Snippets: 0
Tutoriels: 0
Hors ligne
coucou,
je suis allé un peu vite oui :p
J'ai l'impression que c'est plus de l'héritage que tu veux faire non ?

exemple :

Code Cpp:

class B;
class A : class B
{
    public:
       void fonction ();
};
 
class B
{
protected:
    int a;
 
    function f() { cout << a; };
};
 
A::fonction()
{
   a = 1;
}
 
// Tu peux également faire ca donc
A monobjetA;
B monobjetB;
 
monobjetA.a = 2;
monobjetB.a = 3;
 
monobjetA.f(); // affichera 2
monobjetB.f(); // affichera 3
 
monobjetA.fonction();
monobjetA.f(); // affichera 1
 
// Mais je ne peux pas faire
// monobjetB.fonction(); car fonction() est défini que pour A
 
 
 
 


Le coup du friend c'est autre chose. Ca permettrait par exemple d'accéder à une méthode privé d'une classe.

Par exemple :

Code Cpp:

 
class B;
class A
{
   private:
      int a;
      f();
 
      friend B;
};
class B
{
   void test(A *objetA)
   { 
      // Ici je peux accéder à f et a qui sont privé car je suis une amie
      objetA->a = 0;
      objetA->f();
   }
};


Donc dans mon exemple un peu bateau ( pas testé ... ), tu accèdes depuis B à des choses privées de A car tu es amie, si tu ne l'étais pas, tu ne pourrais pas le faire.

voila
Sem

Dernière modification par Sem (30-06-2010 17:31:12)

30-06-2010 17:41:57  Re: Probleme classe amie #5
yannp (Membre)
Inscrit le : 02-06-2010
Messages: 61
Snippets: 0
Tutoriels: 0
Hors ligne
Tu as raison.
En fait, j'ai des classes A, B
A est une classe qui a comme donnée membre B et je souhaite que cette classe (B) puissent accéder aux données de A, sachant que B est déjà héritière de wxScrollWindow.. héritage multiple ? (j'ai essayé et il me répond : wxWindow is an ambigous base of 'B'
Merci pour ton aide.

Yann
Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Développement C/C++
» Probleme classe amie