Вероятно, это не трудный вопрос, но я всегда немного смущаюсь о том, как рассматривать Строковый тип как аргумент в Visual C++. У меня есть следующее к функциям:
void function_1(String ^str_1)
{
str_1 = gcnew String("Test");
}
void function_2()
{
String ^str_2 = nullptr;
function_1(str_2);
}
После вызова function_1
, str_2
все еще равно null
, но то, чего я хочу достигнуть, является этим str_2
равно Test
. Так, как я могу достигнуть этого содержание str_1
передается function_2
?
Спасибо за любой совет.
Использовать отслеживающую ссылку:
void function_1(String ^%str_1)
{
str_1 = gcnew String("Test");
}
Объяснение: Передача String ^
подобна передаче указателя. Изменения вносятся только в локальную копию ссылки. String ^%
- это как передача ссылки на ссылку... точно так же, как вы передаете указатель на указатель при вызове функции, которая должна изменить исходный указатель.