(variable) Stringrückgabe aus einer Memberfunktion?
-
Hi, ich möchte einen VARIABLEN String aus einer Memberfunktion zurückgeben.
Wie mache ich das?
Mein Problem:
char* getVariablerString() // eine Public-Funktion IN einer Klasse
{
char* mybuffer[40];
... // hier werden Variablen ausgelesen
sprintf(mybuffer, "Die Variablen haben die Werte %d und %d.\n", a, b);
return mybuffer;
}Im Main möchte ich die Sache per:
cout << InstanzEinerVariablen.getVariablerString();
ausgeben.Ich bekomme natürlich die Fehlermeldung, daß ich versuche die Adresse der LOKALEN Variable zurück zu geben. ABER wie kann ich es bewerkstelligen ohne static char* mybuffer[40] oder OHNE globale Variable?
Eine andere Überlegung war anstatt char* ... new char[40] zu nehmen. Aber wer gibt denn dann den Speicher frei, weil wenn ich den Rückgabewert nur, so wie oben, ausgeben will, habe ich ja danach keinen Zugriff mehr auf den Speicherbereich und kann ihn also auch nicht wieder frei geben .
Wer kann mir helfen und hat einen Tip?
Danke - jr.
-
Du könntest den lokalen string als static deklarieren oder Speicher mit new reservieren.
Beide Varianten haben Fallstricke und Tücken, also schau dir mal den std::string an.edit: oh, new hattest du schon vorgeschlagen und die Problematik erkannt
-
Membernethode ?
Dann leg doch ne membervariable an und geb const std::string & zurück
-
#include <sstream> std::string ScheinbarIrgendeineKlasse:getVariablerString() const { std::ostringstream stream; stream << "Die Variablen haben die Werte " << a << " und " << b << ".\n"; return stream.str(); }
...?