Bonjour,
Le code ci-dessous fonctionne sous visual studio (2008,2010). J'accède à un membre privé depuis l'exterieur du code source d'une classe.
Par ailleurs, il est certain dans le standard que les classes internes ont accès aux membres privés d'une classe (ex: permet de faire les foncteurs internes aux fonctions).
A partir de là, il semblerait logique d'accéder depuis l'extérieur aux membres privés d'une classe, en utilisant une spécialisation de template.
Manque de pot, on me dit que c'est pas du c++ légal. J'aimerai savoir ce qui est issu du standard c++ et justifie ce point de vue.
A vos avis éclairés,
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 class ClassA { public: template <class T> class NestedClass{}; private: int hiddenValue; }; // I am now outside ClassA source code, and I will grant myself access to hiddenValue. template <> class ClassA::NestedClass<float> { public: void changeIt(ClassA& p){ p.hiddenValue = 6;} }; int main() { ClassA a; ClassA::NestedClass<float> b; b.changeIt(a); return 0; }
ElPedro
Partager