J ai du mal a comprendre l utilité de la structure class de class comme illustrée dans le essage de MSDN error suivant:

Compiler Error C2327
'symbol' : is not a type name, static, or enumerator

Code within a nested class attempts to access a member of the enclosing class that is not a type name, a static member, or an enumerator.
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
 
Example
 
// C2327.cpp
int x;
class enclose {
public:
   int x;
   static int s;
   class inner {
      void f() {
         x = 1;      // C2327; enclose::x is not static
         s = 1;      // ok; enclose::s is static
         ::x = 1;    // ok; ::x refers to global
      }
   };
};
Premiere question:
quelqu un de ce Forum aurait-il une illustration pertinente de cette technique par un exemple concret de maniere a bien comprendre l utilite d une telle syntaxe qui pour moi reste tres exotique.


deuxieme question:
Modifions le code ci dessus par:


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
class enclose {
public:
   int x;
   static int s;
int g( int &);
   class inner {
      void f() {
         x = 1;      // C2327; enclose::x is not static
         s = 1;      // ok; enclose::s is static
         ::x = g(s);    // ok; ::x refers to global
      }
   };
};
[Farscape: Merci]