Überladen nicht bei Zeigern auf Klassen?
-
Hi,
ich hab eine keine Testklasse geschrieben und den Zuweisungsoperator = überladen:
class TestKlasse { private: int data; public void operator=(const int &NewData) { data = NewData; } };
Diese zuweisung klappt:
TestKlasse DieKlasse; DieKlasse = 5;
Das ganze klappt aber nicht, wenn ich die klasse als Zeiger mache:
TestKlasse * DieKlasse = new TestKlasse; DieKlasse = 5;
Der Fehler war als ob ich den Operator nicht überladen hätte, muss man für Zeiger den Operator nochmal überladen?
Greetz,
Toast
-
versuchs mit:
*DieKlasse=5;
-
Ups..., geht auch :D:D
-
erkläre mir bitte was hier geschieht:
char* s=new char[10]; s="Hallo"; delete [] s; //und was passiert hier: char* s=new char[10]; s[0]='H'; s[1]='a'; s[2]='l'; s[3]='l'; s[4]='o'; s[5]='\0'; delete [] s;
wo ist der unterschied.
wenn du mir das erklären kannst, dann wirst du sicher auf deinen denkfehler draufkommen.
wenn nicht: Tipp:
s[0] == *s
-
Schon klar, ich hab den Dereferenzierungsoperator nur grade vergessen, weil man bei KlassenZeigern halt normalerweise mit -> die Attribute benutzt...
Geht das erste delete[] s; überhaupt?
Der Zeiger zeigt doch überhaupt nichtmehr auf den reservierten Bereich?¿
-
Original erstellt von TheToast:
Geht das erste delete[] s; überhaupt?
Der Zeiger zeigt doch überhaupt nichtmehr auf den reservierten Bereich?¿rihctig. es geht nicht - ich wollte lediglich auf den unterschied zwischen
str und *str hinweisen
-
[ Dieser Beitrag wurde am 25.04.2003 um 17:57 Uhr von virtual editiert. ]