Compiler Error C3160

'pointer' : a data member of a managed class cannot have this type

Interior garbage collection pointers may point to the interior of a managed class. Because they are slower than whole-object pointers and require special handling by the garbage collector, you cannot declare interior managed pointers as members of a class.

The following sample generates C3160:

// C3160.cpp
// compile with: /clr
ref struct A {
   // cannot create interior pointers inside a class
   interior_ptr<int> pg;   // C3160
   int g;   // OK
   int* pg2;   // OK
};

int main() {
   interior_ptr<int> pg2;   // OK
}

Managed Extensions for C++

The following sample generates C3160:

// C3160b.cpp
// compile with: /clr:oldSyntax

__gc struct A {
   // cannot create interior pointers inside a class
   int __gc* pg; // C3160
   int g;   // OK
   int __nogc *pg2;   // OK
};

int main() {
   int __gc* pg2;   // OK
}