Ik snap niet waarom zowel C++ Builder 6 als Visual C++ 6 een error spugen op de aangegeven plaats in de volgende code:
In de C++ standaard staat namelijk (9.8 Local Class Declarations, paragraaf 1):
Dus, wat doe ik fout ? (Het leek me een beetje te toevallig wanneer beide compilers er precies allebei op dezelfde manier naast zouden zitten..)
code:
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
| struct B;
class A
{
int i;
friend B;
};
struct B
{
void f ()
{
A().i;
struct S
{
void g ()
{
A().i; // error: A::i not accessible (beide compilers)
}
};
S().g();
}
}; |
In de C++ standaard staat namelijk (9.8 Local Class Declarations, paragraaf 1):
Aangezien het accessen van A::i goed ging vanuit B::f, zou het dus ook goed moeten gaan vanuit S::g ..The local class [...] has the same access to names outside the function as does the enclosing function.
Dus, wat doe ik fout ? (Het leek me een beetje te toevallig wanneer beide compilers er precies allebei op dezelfde manier naast zouden zitten..)