Struct Tyedef结构不处理非托管C++/CLI

Struct Tyedef结构不处理非托管C++/CLI,struct,bitmap,c++-cli,typedef,Struct,Bitmap,C++ Cli,Typedef,我想创建一个图片结构,其中一些中庭将是图片的路径和图片的位图。问题是,当我添加这些atributes时,它会在变量名下面加上红色下划线,并显示 A member of a non-managed class cannot be handled. 有什么解决方法吗?这是我的密码: typedef struct{ System::String^ Path; BitMap^ image; }Picture 我知道我可以使用char*作为路径,但出于其他原因,我选择使用String

我想创建一个图片结构,其中一些中庭将是图片的路径和图片的位图。问题是,当我添加这些atributes时,它会在变量名下面加上红色下划线,并显示

A member of a non-managed class cannot be handled.
有什么解决方法吗?这是我的密码:

typedef struct{
    System::String^ Path;
    BitMap^ image;

}Picture

我知道我可以使用char*作为路径,但出于其他原因,我选择使用
String^

它不起作用,因为您的
typedef
声明了一个本机结构(为什么在C++中使用<代码> TyPufFrase?<代码>结构>无论< /COD>也一样,但这里既不存在也不存在。 声明托管的
结构
,但它与C#
结构
不同。您还可以使用:

value struct MyStruct {}
// or
value class MyStruct {}

对于C++等价的结构,C++/CLI程序中的结构/类的区别类似于C++结构/类的区别,而不是C结构/类的差异。它是<>代码> REF和Value>代码>重要的修改器。

< P>不能直接将托管引用嵌入到本机类型中。

将它们包装到gcroot模板中:

typedef struct{
    gcroot<System::String^> Path;
    gcroot<BitMap^> image;
}Picture
typedef结构{
根路径;
根图像;
}图画

您将如何使用此结构?
typedef struct{
    gcroot<System::String^> Path;
    gcroot<BitMap^> image;
}Picture