Zeiger übergabe hackt
-
Hallo alle Zusammen,
ich bin noch neu in c++, vielleicht kann mir jemand helfen?
mein Problem ist, ich will einen Zeiger Übergeben wie folgt
Die aufgerufene Funktion lautet:void save(float d,string *zahl) { ostringstream Str; Str << d; string ZahlAlsString = Str.str(); zahl = &ZahlAlsString; }Ich habe diese in der Main Funktion so aufgerufen
float data =1.1111; string *buf; save(data,buf); cout << *buf <<endl;was einen LAufzeitfehler herauf beschwört.
danke schonmal gruß Timb0
-
Du hast mit string* buf nur einen Zeiger, aber keinen Speicher dafür bereitgestellt.
Versuch es mit Referenzen und lokalen Objekten:void save(float d, string& zahl) { ostringstream Str; Str << d; zahl = Str.sstr(); } float data = 1.1111f; string buf; save(data, buf); cout << buf << endl;
-
uich denke doch dsa muss so heißen oder?
void save(float d, string& zahl) { ostringstream Str; Str << d; zahl = Str.sstr();//sstr() is doch falsch muss doch str() heißen oder? } float data = 1.1111f; string buf; save(data, buf); cout << buf << endl;@Airdamn ich wollte ihm auch gerade sagen das es mit referenzen besser geht, man sieht ich habe verstanden

-
Ja stimmt, hab an der Stelle ein s zuviel

-
Nur der Vollständigkeit halber:
string *buf = new string(); //... delete buf;Aber Referenzen sind (in diesem Fall (wie in vielen)) besser.