Compiler Error C3366
'variable' : static data members of managed types must be defined within the class definition
You attempted to reference a static member of a .NET class or interface outside the definition of that class or interface.
The compiler needs to know the full definition of the class (to emit the meta-data after one pass) and requires static data members to be initialized within the class.
For example, the following example generates C3366:
// C3366.cpp
// compile with: /clr /c
ref class X {
public:
static int i; // initialize i here to avoid C3366
};
int X::i = 5; // C3366
The following example generates C3366:
// 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