Передайте аргумент ссылкой в C++ / CLI, таким образом, переназначение влияет на вызывающую сторону

Вероятно, это не трудный вопрос, но я всегда немного смущаюсь о том, как рассматривать Строковый тип как аргумент в 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?

Спасибо за любой совет.

13
задан Ben Voigt 19 June 2010 в 18:56
поделиться

1 ответ

Использовать отслеживающую ссылку:

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

Объяснение: Передача String ^ подобна передаче указателя. Изменения вносятся только в локальную копию ссылки. String ^% - это как передача ссылки на ссылку... точно так же, как вы передаете указатель на указатель при вызове функции, которая должна изменить исходный указатель.

29
ответ дан 1 December 2019 в 20:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: