TStringList per Value übergeben
-
Hallo Zusammen,
Ich hab ein Problem:
Ich möchte eine StringList per value übergeben:
(Funktionskopf)
void cSchluesselung::Codiere(TStringList &liste)wenn ich aber nun der Methode eine Liste übergebe:
TStringList *liste = new TStringList; liste->Add("Heut morgen war ich müde!"); FSchluessel->Codiere(liste);..bekomme ich die Fehlermeldungen :
Temporäre Größe für Parameter "liste"
und
"TStringList &" kann nicht mit "StringList *" initialisiert werdenWeiss jemand, was ich falsch mache?

-
Listig? schrieb:
void cSchluesselung::Codiere(TStringList &liste)void cSchluesselung::Codiere(TStringList* liste)
-
@Joe_M : Aber übergebe ich mit "*" nicht nur eine Referenz? Also die Originalliste wird dann doch nicht mit verändert, oder nicht?
-
Hi,
da Du die Liste mit new erzeugt hast (TStringList* xxx = new...) hast Du einen Zeiger auf die Liste, diesen Zeiger kannst Du übergeben. Alle Änderungen werden an dem Originalobjekt durchgeführt (eben weil Du es über seine Speicheradresse referenzierst).
Anders sähe es aus, wenn das Objekt nicht mir new erzeugt wurde. Wird ein solches Objekt in einer Funktion übergeben, werden keine Änderungen an dem Originalobjekt durchgeführt, sondern an einer Kopie des Objektes. Um solche Änderungen dennoch am Originalobjekt durchführen zu können, muß in diesem Fall eine Referenz auf das Objekt übergeben werden (&Objekt).
Ich hoffe das ist halbwegs verständlich, ansonsten bitte noch mal posten. Vielleicht erbarmt sich ja jemand mit besseren schriftstellerischen Fähigkeiten...
-
@Joe_M : Nicht so bescheiden

Ich hab alles verstanden!
thx...