Compiler Error C3160
Visual Studio 2015
The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.
The latest version of this topic can be found at Compiler Error C3160.
pointer' : a data member of a managed or WinRT class cannot have this type
Interior garbage collection pointers may point to the interior of a managed or WinRT 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
}
Show: