Membres inscrits :598
Membres en ligne : 0
Invités en ligne : 3


|
| Conversation (Résolue) : Probleme classe amie |
yannp (Membre)
Inscrit le : 02-06-2010
Messages: 59
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
| |
|
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; }
| |
|
yannp (Membre)
Inscrit le : 02-06-2010
Messages: 59
Snippets: 0
Tutoriels: 0
Hors ligne |
Oui j'ai essayé, mais il me répond que B has not been declared.
| |
|
Sem (Membre)
Inscrit le : 31-05-2008
Messages: 64
Snippets: 0
Tutoriels: 0
Hors ligne |
coucou, je suis allé un peu vite oui  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)
| |
|
yannp (Membre)
Inscrit le : 02-06-2010
Messages: 59
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
| |
|
|