vererbungs problem
-
hallo
ich will eigene iterator klasse für verkettete liste schreiben
um nicht jedes mal eine komplett neue iterator klasse zu schreiben habe ich eine basis klasse für einen forward iterator geschrieben.
aber jedes mal wenn eine klasse von CForward ableite und dann den
postfix operator++ aufrufe bekomme ich eine warnung "C4620: no postfix form of 'operator ++' found for type 'Iterator', using prefix form"Sieht der kompiler operator++() und operator++(int) nicht als seperate überlandene Funktionen??
Und gibt es noch andere möglichkeiten als operator++() virtual zu machen??vielen dank schon mal im vorraus
AuRuX
template<typename _Derived,typename _DataType> class CForward { public: _Derived& operator=(const _Derived& Iterator) { memcpy(this,&Iterator,sizeof(_Derived)); } ..... _Derived& operator++()//prefix { return *((_Derived*)this); } _Derived operator++(int)//postfix { _Derived Iterator=*((_Derived*)this); ++(*((_Derived*)this)); return Iterator; } };
-
Er sieht sie als getrennte Operatoren.
Dein Zuweisungsoperator ist echt wahnsinn... Objekte mit memcpy zu kopieren... *graus*
Außerdem ist CForward nicht vom Typ _Derived abgeleitet, sowas wie:
(_Derived*) thisfunktioniert nicht auch wenn du den Zuweisungs-Operator überschrieben hast.
operator++(CForward) wäre außerdem glaub ich als Funktionsdeklaration geschickter.