Compilerfehler C3160

Aktualisiert: November 2007

Fehlermeldung

'Zeiger': Ein Datenmember einer verwalteten Klasse kann nicht diesen Typ aufweisen
'pointer' : a data member of a managed class cannot have this type

Innere Garbage Collection-Zeiger zeigen möglicherweise auf den Innenbereich einer verwalteten Klasse. Da diese Zeiger einerseits langsamer sind als Zeiger auf das ganze Objekt und andererseits vom Garbage Collector in bestimmter Weise verarbeitet werden müssen, können innere verwaltete Zeiger nicht als Member einer Klasse deklariert werden.

Im folgenden Beispiel wird C3160 generiert:

// 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++

Im folgenden Beispiel wird C3160 generiert:

// 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
}