000
04.06.2004, 19:09 Uhr
~Christoph Redl
Gast
|
Hallo!
Ich schreibe gerade eine String-Klasse. Diese verwaltet intern ein char-Array wo der String gespeichert wird und einen Integer, wo die Länge gespeichert wird.
Nun möchte ich den Operator + überladen:
C++: |
const String String::operator+ (String& s2){
char* newString = new char[this->size + s2.getLength() + 1]; strcpy(newString, this->str); strcpy(newString + sizeof(char) * this->size, s2.str); newString[this->size + s2.getLength()] = '\0'; String sNew(newString); delete newString; return sNew;
}
|
Problem dabei: Nachdem die Funktion aus ist enthält das Objekt "sNew" keinen gültigen String mehr. Er ist mit lauter komischen Zeichen aufgefüllt. Die Integer-Variable ist jedoch nach wie vor gültig. Liegt wahrscheinlich daran, dass ich ein lokales Objekt erzeuge und dieses nach der Funtktion zerstört wird, aber wie mache ich es sonst? Habe gerade ein Tutorial gesehen wo es auch so gemacht wird.
Falls es hilft, hier noch die Klassendefinition:
C++: |
class String{
public: char* str; String(const char*); String(char, long); String(String&); ~String(); const long getLength() const{ return this->size; } const char* getString() const{ return this->str; } void print(); const String operator+ (String&); const String operator+= (String&);
private: long size;
};
|
Ich weiß schon, dass es bereits eine fertige String-Klasse gibt - soll nur eine Übung sein.
Danke schonmal!
mfg Dieser Post wurde am 04.06.2004 um 19:16 Uhr von Pablo editiert. |