Probablemente esta no sea una pregunta difícil, pero siempre estoy un poco confundido sobre cómo tratar el tipo String como un argumento en Visual C++. Tengo las siguientes funciones:Pasar un argumento por referencia en C++/CLI, por lo que la reasignación afecta a la persona que llama
void function_1(String ^str_1)
{
str_1 = gcnew String("Test");
}
void function_2()
{
String ^str_2 = nullptr;
function_1(str_2);
}
Después de llamar function_1
, str_2
sigue siendo igual a null
, pero lo que queremos lograr es que str_2
es igual a Test
. Entonces, ¿cómo puedo lograr que el contenido de str_1
se pase al function_2
?
Gracias por cualquier consejo.
Gracias! ¡Aprendí algo hoy! – stefangachter
@Agnel No entiendo por qué dijiste que cuando pasas un puntero solo cambian las copias locales de la referencia. En primer lugar, un puntero no es una referencia. En segundo lugar, si pasa un puntero en C++ y modifica los datos a los que apunta, no está modificando una copia local de los datos. ¿Me confundí en la semántica o qué? – Ian
@Ian, lo que quise decir es que si pasa un puntero y cambia el valor de la variable del puntero (a diferencia del valor de los datos a los que apunta), solo cambiará el valor de la variable del puntero local. Y sí, si modifica los datos a los que apunta un puntero, los datos en sí se modifican y no la copia local. No existe una copia local de los datos; una copia local del puntero existe. –