我需要知道如何在本机代码中声明托管类型?
赞:我在class Editor
Editor.h
在本机代码(main.cpp)中:
Editor^ MainEditor;
但它给了我以下内容:
MainEditor' : global or static variable may not have managed type 'Cube3D::Editor ^'
我试图在容器内制作它,但我仍需要声明它。
答案 0 :(得分:1)
由于错误声明您无法在全局或静态级别拥有托管类型。
您已声明在方法中使用它是正确的。要将其存储在本机类中,您需要使用gcroot。
答案 1 :(得分:1)
你不能直接这样做。问题是托管对象将被垃圾收集器移动,纯粹的本机代码无法处理。
这是允许的:
/clr
编译托管类型的成员才能生成托管代码。这可以使用托管代码和本机代码实现的托管类型和本机类型。/clr
编译本机类型和命名空间的成员以生成托管代码。这可以使用托管代码和本机代码实现的托管类型和本机类型。/clr
的情况下编译本机类型和命名空间的成员以生成本机代码。这只能使用本机类型,但使用的类型可以通过托管代码或本机代码实现。因此,您需要在本机代码和托管类型之间使用一个层,此中间层将是使用托管代码实现的本机类型。
当然,#pragma managed
可以与/clr
互换使用,以便更好地控制。