Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
Compiler Error C3366
Collapse the table of content
Expand the table of content

Compiler Error C3366

'variable' : static data members of managed or WinRT types must be defined within the class definition

You attempted to reference a static member of a WinRT or .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 and shows how to fix it:

// 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 and shows how to fix it:

// 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
Show:
© 2015 Microsoft