Compilerfehler C3265

Ein verwaltetes 'verwaltetes Konstrukt' kann nicht in einem nicht verwalteten 'nicht verwaltetes Konstrukt' deklariert werden

Sie können kein verwaltetes Objekt in einen nicht verwalteten Kontext einbeziehen.

Im folgenden Beispiel wird C3265 reproduziert:

// C3265_2.cpp
// compile with: /clr /LD
#include <vcclr.h>

ref class A { };

class B
// try the following line instead
// ref class B 
{
   A ^a;   // C3265
   // or embed the managed handle using gcroot
   // try the following line instead
   // gcroot<A^> a;
};

Im folgenden Beispiel wird C3265 reproduziert:

// C3265.cpp
// compile with: /clr:oldSyntax /LD
#using <mscorlib.dll>
__gc class A { };

__nogc class B
// try the following line instead
// __gc class B 
{
   A *a;   // C3265
};

C3265 kann auch auftreten, wenn Sie einen verwalteten Zeiger direkt in eine nicht verwaltete Klasse einbetten.Verwenden Sie gcroot, um diesen Fehler zu beheben:

// C3265b.cpp
// compile with: /clr:oldSyntax
#include <vcclr.h>
#using <mscorlib.dll>

namespace TestNS {
   __gc public class Test{};
}

template<class T>
struct Container {
  T* m_px;   // C3265
};
__gc public class ClassA {
public:
  ClassA (){}
   ~ClassA(){}

private:
   Container<TestNS::Test*>  vctTest;
   // try the following line instead
   Container<gcroot<TestNS::Test* > > vctTest2;
};