Compilerfehler C3145
'Objekt' : Eine globale oder statische Variable darf nicht den verwalteten Typ 'Typ' aufweisen.
Innerhalb des Funktionsgültigkeitsbereichs können nur CLR-Objekte definiert werden.
Im folgenden Beispiel wird C3145 generiert:
// C3145.cpp
// compile with: /clr
using namespace System;
ref class G {};
G ^ ptr; // C3145
G ^ ptr2 = gcnew G; // C3145
ref class GlobalObjects {
public:
static G ^ ptr; // OK
static G ^ ptr2 = gcnew G; // OK
};
int main() {
G ^ ptr; // OK
G ^ ptr2 = gcnew G; // OK
}
Im folgenden Beispiel wird C3145 generiert:
// C3145b.cpp
// compile with: /clr
ref class MyClass {
public:
static int data;
};
interior_ptr<int> p = &(MyClass::data); // C3145
void Test(interior_ptr<int> x) {}
int main() {
MyClass ^ h_MyClass = gcnew MyClass;
interior_ptr<int> p = &(h_MyClass->data);
}
Managed Extensions for C++
Im folgenden Beispiel wird C3145 generiert:
// C3145c.cpp
// compile with: /clr:oldSyntax
using namespace System;
__gc class G {};
G *ptr; // C3145
G *ptr2 = new G; // C3145
__gc class GlobalObjects {
public:
static G *ptr; // OK
static G *ptr2 = new G; // OK
};
int main() {
G *ptr; // OK
G *ptr2 = new G; // OK
}