在C++/CLI中通过引用传递参数,因此重新分配会影响调用者

ste*_*ter 13 c++-cli pass-by-reference

可能这不是一个困难的问题,但我总是对如何将String类型视为Visual C++中的参数感到困惑.我有以下功能:

void function_1(String ^str_1)
{
  str_1 = gcnew String("Test");
}

void function_2()
{
  String ^str_2 = nullptr;
  function_1(str_2);
}
Run Code Online (Sandbox Code Playgroud)

在打电话之后function_1,str_2仍然等于null,但我想要实现的str_2是等于Test.那么,我怎样才能实现将内容str_1传递给function_2

谢谢你的建议.

Agn*_*ian 29

使用跟踪参考:

void function_1(String ^%str_1)
{
  str_1 = gcnew String("Test");
}
Run Code Online (Sandbox Code Playgroud)

说明:传递String ^就像传递指针一样.仅对引用的本地副本进行更改.String ^%就像传递对引用的引用一样......就像在调用应该更改原始指针的函数时将指针传递给指针一样.