operator ++ ()
-
Hallo...
Eigtl ist es ja kein Problem, Operatoren zu überladen, aber mal angenommen:struct zeichen { private: char w; zeichen *pNext; public: //GetChar () und andere Funktionen, damit das Sinn macht ^^ zeichen& operator ++ (void) { this = this->pNext; return *this; }; };Eigentlich ist damit denk ich klar, was ich will - und anscheind geht es nicht, weil this als
T * constdefiniert ist...
Aber wie soll man so was dann hinbekommen? Gibts da überhaupt ne Möglichkeit?Der Vollständigkeit halber mal noch die Fehlermeldung des Compilers - aber das sollte ja eigtl klar sein:
error C2106: '=': Linker Operand muss ein L-Wert seinDanke schon mal : >
-
hallo,
den this-zeiger zu verändern, was soll das bringen
machs doch so
struct zeichen { private: char w; zeichen *pNext; public: //GetChar () und andere Funktionen, damit das Sinn macht ^^ zeichen& operator ++ (void) { return *(this->pNext); }; };oder aber du machst das mit iteratoren
struct zeichen { private: char w; zeichen *pNext; public: //GetChar () und andere Funktionen, damit das Sinn macht ^^ class iterator { public: iterator(Zeichen *p = 0) pZeichen(p) {} bool operator == (const iterator &k) { return this == &k; } ..... private: zeichen *pZeichen; }; zeichen& operator ++ (void) { return *(this->pNext); }; iterator begin(); { return iterator(this); } iterator end(); { return iterator(0); } friend class iterator; };mfg helferlein
-
Naja - das so was geht:
//zeichen *string; for (zeichen *iter (string); iter != NULL; ++iter) { iter->GetChar (); }Aber da werd ich wo wirklich nich um iteratoren rumkommen (dachte nur, dasses da irgend ne gaaaaaaanz dreckige und böse lösung gibt - ist eh nur ne aufgabe für die uni ^^) : /
Danke ^^
-
gibt es

du kannst ja in der klasse einen zeiger deklarieren der zu begin auf this gesetzt ist. den kannst du dann weitersetzen
class zeichen { public: zeichen() { ptr = this; } void operator ++ () { if (ptr) ptr = ptr->pNext; } char GetChar() { return ptr->w; } private: zeichen *ptr, *pNext; char w; };
-
die lösung gefällt mir so gar richtig sehr : )
danke helferlein

bb