Compilerfehler C3366

'Variable': Statische Datenmember von verwalteten Typen müssen innerhalb der Klassendefinition definiert werden

Sie haben versucht, einen Verweis auf einen statischen Member einer .NET-Klasse oder -Schnittstelle zu erstellen, das sich außerhalb der Definition dieser Klasse oder Schnittstelle befindet.

Der Compiler muss die vollständige Definition der Klasse kennen (um die Metadaten nach einer Übergabe auszugeben), und statische Datenmember müssen in der Klasse initialisiert werden.

Im folgenden Codebeispiel wird z. B. C3366 generiert:

// C3366.cpp
// compile with: /clr /c
ref class X {
   public:
   static int i;   // initialize i here to avoid C3366
};

int X::i = 5;      // C3366

Im folgenden Beispiel wird C3366 generiert:

// C3366_b.cpp
// compile with: /clr:oldSyntax /c
__gc struct X {
   static int i;   // initialize i here to avoid C3366
};

int X::i = 5;      // C3366