C++:
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
| template < class T > class B; template < class T > class A { int value; template < class U > friend class B; }; template < class T > class B { public: A< T > *a; }; int main( int argc, char **argv ) { B< int > b; b.a->value = 0; return 0; } |
Dit is niet toegestaan, de compiler zegt:
Wie kan mij uitleggen waarom? In mijn beleving zou 'B' de friend moeten zijn van A, en daarom dus ook aan de private member 'value' mogen komen...main.cpp:7: error: ‘int A<int>::value’ is private
oprecht vertrouwen wordt nooit geschaad