使用gcroot可以实现在 C++/CLI的本地类中包含托管类成员变量,示例代码如下:
include<vcclr.h> // 必须包含vcclr.h头文件
//托管类中传入
A^ a = gcnew A();
gcroot<A^> *pA = new gcroot<A^>();
*pA = a;
B *b = new B(pA); //c++类
//非托管类中还原
void *ptr = pA;
gcroot<A^> *m_pA = (gcroot<A^> *)ptr;
(*m_pA)->FuncA(); //可调用A类方法;