Handle Reference



  • Hallo,
    wahrscheinlich stehe ich gerade auf dem Schlauch, aber wie kann ich eine Referenz auf ein Stringhandle an eine Funktion übergeben, sodass ich den String innerhalb der Funktion ändern kann, wie z.B. FuncInt(...) in meinem Beispiel?

    Peter

    void FuncInt( int %n )
    {
    	n = 0;
    }
    void FuncString( String ^str)
    {
    	str->Concat(str, " world");
    }
    
    int main(array<System::String ^> ^args)
    {
    	int k = 1;
    	FuncInt( k );
    	Console::WriteLine( k ); 
    
    	String ^str = "hello";
    	FuncString( str );
    	Console::WriteLine( str ); 
    	return 0;
    }
    


  • void FuncString(String^% str) 
    { 
        str->Concat(str, " world"); 
    }
    


  • Hallo Simon,

    das hatte ich bereits versucht. Es wird zwar fehlerfrei kompiliert, allerdings wird der String in main(...) nicht verändert. Mit pointer war "früher" alles so einfach 😉

    Gruss
    Peter



  • System::String ist unveränderbar.
    Du musst schreiben:

    str = str->Concat(str, " world");
    

    Dieses Verhalten kann auch in native C++ auftreten.



  • Oja, da konnte ich ja lange an der falschen Stelle suchen. 😉
    Danke vielmals für den Schups in die richtige Richtung!

    Gruss
    Peter


Anmelden zum Antworten