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.
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