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
}