使用gcroot可以实现在 C++/CLI的本地类中包含托管类成员变量,示例代码如下:
#include<vcclr.h> // 必须包含vcclr.h头文件
//test.h
using namespace System::Data;
class native
{
public:
native()
{
m_pConn = gcnew gcroot<IDbConnection^>; //这里应该是为gcroot分配存储空间,其指向的指应该是nullptr;
}
void fun1();
...
private:
gcroot<IDbConnection^>* m_pConn;
}
//test.cpp
void native::fun1()
{
*m_pConn = gcnew SqlConnection(); //m_pConn前加上*号也表明了它的值其实是IDbConnect^型的句柄
...
}