[VC++] String w funkcji

Jak mogę modyfikować zmienną string poprzez funkcję w VC++?

Mam:

String^ text;

zmiana(text);

a funkcja ma postać:

void zmiana(String^ text)

{

text="sadfads"

}

Gdy wywołuję funkcje to wewnątrz niej się zmienna zmienia, ale w głównym nurcie programu żadna zmiana nie zachodzi. Myślałem, że wskaźniki powodują zawsze zmianę zmiennej.

Musisz z tego co pamiętam, przekazać daną przez referencję.

czy znaczek ^ tego właśnie nie robi?

#include "stdafx.h"

using namespace System;


ref class cosik

{

  public:

	  void zmiana(String ^% text)

      {

       text="zmienione";

      }

};


int main(array ^args)

{

	String^ text = "■■■■";


	cosik^ zm = gcnew cosik;

	zm->zmiana(text);


	Console::WriteLine(text);

	Console::ReadLine();

    return 0;

}

Nie wiem dlaczego (nie znam się na CLR oraz .NET),ale działa :slight_smile:

Można to zrobić też bez opakowania tego w klasę.

a jakiś pomysł jak to zrobić inaczej? Bo mi zwyczajnie nie działa. Jak inaczej przekazać Stringa w funkcji, albo gdzie jeszcze szukać możliwości? Dodam, że funkcja jest extern.