0

我对此感到非常困惑 - 我知道如何在 VB、非托管 C++ 和 C# 中执行此操作,但由于某种原因,我不能接受 C++ 中托管类型的 ref 变量。我敢肯定有一个简单的答案,真的 - 但这是 C# 等价物:

myClass.myFunction(ref variableChangedByfunction);

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

我也找不到任何可以清楚地解释我的问题的文档。

4

3 回答 3

5

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

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

然后你照常传入变量。

于 2008-09-25T19:22:38.037 回答
2

使用 ^ 而不是 *

于 2008-09-25T18:38:36.970 回答
1

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

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

如果您需要跟踪参考(如使用C#refout在 C# 中),您也需要添加%

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

于 2010-02-17T12:22:53.477 回答