将对象从C#传递给C ++得到“不能使用这个间接”?

时间:2012-03-23 12:46:31

标签: c# c++ c++-cli

我在C ++中有这个功能:

struct MyObject
{
}

testAlgorithm(array<String^>^ algorithms, MyObject^ myObject)

我抱怨这个问题抱怨MyObject

  

错误C3699:'^':不能在“MyObject”类型上使用此间接

array<String^>^

的情况并非如此

为什么这样以及如何解决?

在另一种情况下,如果我这样做:

testAlgorithm(array<String^>^ algorithms, MyObject myObject)

然后在C#中,我必须打电话:

testAlgorithm(string[] algorithms, MyObject *myObject);

我在C#中构造MyObject并声明它,但是如何将它传递给testAlgorithm为:*myObject在C#中?

提前致谢。

1 个答案:

答案 0 :(得分:2)

您无法在^上使用MyObject,因为它不是托管类。要将其声明为托管结构(如果作为参数传递,将被复制),您需要使用value struct而不是struct

如果您希望将对象作为引用传递(不进行复制,这可能是您想要的),则应将其声明为ref class