我对此感到困惑 - 我知道如何在VB,非托管C ++和C#中执行此操作但由于某种原因我无法在C ++中接受托管类型的ref变量。我确信这是一个简单的答案 - 但这里是C#的等价物:
myClass.myFunction(ref variableChangedByfunction);
我尝试过C ++指针 - 没有骰子。我尝试过ref关键字。没有骰子。我尝试了[out]关键字。没用。
我找不到任何能够清楚解释我的问题的文档。
有什么想法吗?
答案 0 :(得分:4)
在函数声明中,您需要在参数名称之后使用%:
bool Importer :: GetBodyChunk(String ^%BodyText,String ^%ChunkText)
然后你按常规传递变量。
答案 1 :(得分:2)
使用^而不是*
答案 2 :(得分:1)
只是为了让它更清晰一点:
引用类型的参数(例如System :: String)必须在较新的C ++ / CLI语法中用^
表示。这告诉编译器该参数是GC对象的句柄。
如果您需要跟踪参考(例如C#中的ref
或out
),您还需要添加%
。
这里有一个提示:我经常发现使用.NET Reflector查看现有程序集并切换到C ++代码样式很有帮助。这样可以很好地了解不同.net语言之间互操作性的属性使用情况。