在C ++。net中将ref或指针作为参数传递给托管类型

时间:2008-09-25 18:37:55

标签: .net c++-cli

我对此感到困惑 - 我知道如何在VB,非托管C ++和C#中执行此操作但由于某种原因我无法在C ++中接受托管类型的ref变量。我确信这是一个简单的答案 - 但这里是C#的等价物:

myClass.myFunction(ref variableChangedByfunction);

我尝试过C ++指针 - 没有骰子。我尝试过ref关键字。没有骰子。我尝试了[out]关键字。没用。

我找不到任何能够清楚解释我的问题的文档。

有什么想法吗?

3 个答案:

答案 0 :(得分:4)

在函数声明中,您需要在参数名称之后使用%:

bool Importer :: GetBodyChunk(String ^%BodyText,String ^%ChunkText)

然后你按常规传递变量。

答案 1 :(得分:2)

使用^而不是*

答案 2 :(得分:1)

只是为了让它更清晰一点:

引用类型的参数(例如System :: String)必须在较新的C ++ / CLI语法中用^表示。这告诉编译器该参数是GC对象的句柄。

如果您需要跟踪参考(例如C#中的refout),您还需要添加%

这里有一个提示:我经常发现使用.NET Reflector查看现有程序集并切换到C ++代码样式很有帮助。这样可以很好地了解不同.net语言之间互操作性的属性使用情况。