MastaZulu
Ensign
- Registriert
- Aug. 2002
- Beiträge
- 207
Hi,
bin grad beim Lernen für meine Programmierungs-Prüfung und übe zur Zeit die Implementierung einer String-Klasse.
Soweit so gut
es läuft auch alles, bis auf den Destruktor. Und zwar habe ich eine Funktion namens "repeat" geschrieben, die einen String mehrmals hintereinander schreibt (was sie auch tut). Wird jedoch der Destruktor für dieses String-Objekt aufgerufen, schmiert das Programm ab.
Hier mal ein bisschen Code:
Hier der Aufruf der Funktion:
Also sobald in der Repeat-Funktion etwas verändert wird, schmiert das Programm ab. Hab in anderen Funktionen (z.B. der +-Operator-Überladung) ähnliche Codezeilen was das Verändern des aufrufenden Objektes angeht, die gehen aber alle durch.
Wo liegt mein Fehler?
Gruß
MastaZulu
bin grad beim Lernen für meine Programmierungs-Prüfung und übe zur Zeit die Implementierung einer String-Klasse.
Soweit so gut
Hier mal ein bisschen Code:
Code:
...
// Destruktor
CString::~CString()
{
cout << "Destroying \"" << this->str << "\"" << endl;
delete [] this->str;
}
...
// Repeat-Funktion
CString& CString::repeat(unsigned int rep)
{
cout << "\nRepeating \"" << this->str << "\" " << rep << " times.";
char* temp = new char[(this->len*rep)+1];
temp = strcpy(temp, this->str);
if(rep >= 1)
{
for(unsigned i=0; i<=(rep-1); i++)
temp = strcat(temp, this->str);
delete [] this->str;
this->str = temp;
}
cout << " Repeated String: \"" << this->str << "\"" << endl << endl;
return *this;
}
...
Hier der Aufruf der Funktion:
Code:
#include "strings.h"
void main(void)
{
...
CString S("Hi!_2");
S.repeat(2);
...
}
Also sobald in der Repeat-Funktion etwas verändert wird, schmiert das Programm ab. Hab in anderen Funktionen (z.B. der +-Operator-Überladung) ähnliche Codezeilen was das Verändern des aufrufenden Objektes angeht, die gehen aber alle durch.
Wo liegt mein Fehler?
Gruß
MastaZulu
Zuletzt bearbeitet: