Pass an argument by reference in C++/CLI so re-assignment affects the caller

谁都会走 提交于 2019-11-29 17:25:33

问题


Probably this is not a difficult question, but I am always a little bit confused on how to treat String type as an argument in Visual C++. I have the following to functions:

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

void function_2()
{
  String ^str_2 = nullptr;
  function_1(str_2);
}

After calling function_1, str_2 is still equal to null, but what I want to achieve is that str_2 is equal to Test. So, how can I achieve that the content of str_1 is passed to function_2?

Thanks for any advice.


回答1:


Use a tracking reference:

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

Explanation: Passing String ^ is like passing a pointer. Changes are only made to the local copy of the reference. String ^% is like passing a reference to a reference... just as you would pass a pointer to a pointer when calling a function that should change the original pointer.



来源:https://stackoverflow.com/questions/3059992/pass-an-argument-by-reference-in-c-cli-so-re-assignment-affects-the-caller

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!