verschachtelte und lokale Klassen (1/2)

Klassendeklarationen sind auch lokal bzw. verschachtelt möglich. Dabei ist der Sichtbarkeitsbereich identisch zu anderen lokalen Variablen: Die entsprechenden Klassen sind nach außen hin nicht erkennbar. Lokal und verschachtelt deklarierte und definierte Klassen können aus dem umschließenden Bezugsrahmen nur Typnamen, statische Variablen, extern-Variablen und -Funktionen sowie Aufzählungen verwenden.

verschachtelte Klassen-Deklarazion

  int x, y;

  class aussen {

    int x; static int z;

    class innen {
      void f(int i) {
        x = i;     // Fehler: x gehoert zu aussen.
        z = i;     // ok, z ist statisch.
        ::x = i;   // ok, ::x ist global
        y = i;     // auch ok 
      }
    };
  };

  innen x;         // Fehler: innen nicht bekannt.