我在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#中?
提前致谢。
答案 0 :(得分:2)
您无法在^
上使用MyObject
,因为它不是托管类。要将其声明为托管结构(如果作为参数传递,将被复制),您需要使用value struct
而不是struct
。
如果您希望将对象作为引用传递(不进行复制,这可能是您想要的),则应将其声明为ref class
。