Compiler Error C2847

cannot apply sizeof to managed type 'class'

The sizeof operator gets the value of an object at compile time. The size of a managed class, interface, or value type is dynamic and so cannot be known at compile time.

For example, the following sample generates C2847:

// C2847.cpp
// compile with: /clr
ref class A {};

int main() {
   A ^ xA = gcnew A;
   sizeof(*xA);   // C2847 cannot use sizeof on managed object
}

The following sample generates C2847:

// C2847_b.cpp
// compile with: /clr:oldSyntax
__gc class A {};

int main() {
   A *xA = new A;
   sizeof(*xA);   // C2847 cannot use sizeof on managed object
}