Probabilmente questa non è una domanda difficile, ma sono sempre un po 'confuso su come trattare il tipo String come argomento in Visual C++. Ho le seguenti funzioni:Passare un argomento per riferimento in C++/CLI in modo che la riassegnazione abbia effetto sul chiamante
void function_1(String ^str_1)
{
str_1 = gcnew String("Test");
}
void function_2()
{
String ^str_2 = nullptr;
function_1(str_2);
}
Dopo aver chiamato function_1
, str_2
è ancora pari a null
, ma quello che voglio ottenere è che str_2
è uguale a Test
. Quindi, come posso ottenere che il contenuto di str_1
venga passato a function_2
?
Grazie per qualsiasi consiglio.
Grazie! Ho imparato qualcosa oggi! – stefangachter
@Agnel Non capisco perché hai detto che quando si passa un puntatore vengono cambiate solo le copie locali del riferimento. Prima di tutto un puntatore non è un riferimento. In secondo luogo, se si passa un puntatore in C++ e si modificano i dati a cui punta, non si modifica una copia locale dei dati. Sono stato confuso nella semantica o cosa? – Ian
@Ian, volevo dire che se si passa un puntatore e si modifica il valore della variabile puntatore stessa (diversamente dal valore dei dati a cui punta), solo il valore della variabile puntatore locale cambierà. E sì, se si modificano i dati puntati da un puntatore, i dati stessi vengono modificati e non la copia locale. Non esiste una copia locale dei dati; esiste una copia locale del puntatore. –