Bonjour,
J'ai déclaré une classe B à l'intérieur d'une classe A pour que la classe B ne puisse être instanciée que par la classe A.
Apparement ça fonctionne mais il se passe quelque chose de bizzare au niveau de l'encapsulation.
Voici en gros comment ma classe est construite:
je n'arrive pas à comprendre pourquoi la fonction membre de B a accés à la variable privée de A.
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 class A { class B { A *pA; int var; ... public: B(..){...} void getA(A *a){pA = a;} void func(); }; int var; B *pB; ... public: A(...) { ... pB = new B(...); pB->getA(this); } void func(); }; void A::func() { pB->var = 10; //erreur var est privé } void A::B::func() { pA->var = 10; //pas d'erreur ???? }
Est ce normal, et comment faire pour que la variable de A reste privé et donc inaccessible ?
Merci
Partager