Передайте аргумент по ссылке в С++/CLI, поэтому повторное присвоение влияет на вызывающего
Вероятно, это не сложный вопрос, но я всегда немного смущен тем, как рассматривать тип String как аргумент в Visual С++. У меня есть следующие функции:
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
?
Спасибо за любой совет.
Ответы
Ответ 1
Используйте ссылку отслеживание:
void function_1(String ^%str_1)
{
str_1 = gcnew String("Test");
}
Объяснение: Передача String ^
- это как передача указателя. Изменения вносятся только в локальную копию справки. String ^%
походит на передачу ссылки на ссылку... так же, как вы передадите указатель на указатель при вызове функции, которая должна изменить исходный указатель.