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.

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;
}
A vos avis éclairés,

ElPedro