Operator überladaen
-
Hey Leute,
kleines Problemchen. Ich möchte einen Operator überladen um mich durch eine verkettete Liste zu hangeln. Arbeite dabei nur! mit Zeigern.B* operator + (B *tmp) { return tmp = tmp->next; } class A { public: B* start; private: //operator friend B* operator++(B *tmp); };um dann in einer Schleife
zb so zu iteriern:
B* tmp = start;
while () {
tu was
tmp++;
}Wie mach ich das am besten? Gehen Zeiger überhaupt?

Gruß dave
-
Naja so die Bennenung der Klassen,trotz Beispiel, ist nicht gerade der Renner.An deiner Stelle würde ich in die Klasse A einen weitere Klasse Iterator einpflegen, die einen Listenknoten als private Member hält und mit dem hangelst du dich da dann durch, ich hatte sowas ähnliches mal hier gefragt.
http://www.c-plusplus.net/forum/viewtopic-var-t-is-231434.html
-
Du willst nicht den
operator+überladen, sondern denoperator++.B* operator++() //präinkrement { return next; } B* operator++(int) //postinkrement { B* temp = next; ++;next return temp; }
-
Tachyon schrieb:
Du willst nicht den
operator+überladen, sondern denoperator++.B* operator++() //präinkrement { return next; } B* operator++(int) //postinkrement { B* temp = next; ++;next return temp; }du meinst sicherlich
B* operator++(int) //postinkrement { B* temp = next; ++*next return temp; }
-
Firefighter schrieb:
du meinst sicherlich
B* operator++(int) //postinkrement { B* temp = next; ++*next return temp; }Nö, ich meinte schon
++next. Man will doch aufs nächste Element zeigen, und nicht das Element selbst inkrementieren (mal davon abgesehen, dass das u.U. nichtmal geht).
-
Hmm, ich bin der Meinung ein solches Konstrukt bei dem Breymann in dem buch gelesen zu haben... Ich schau nochmal nach.
-
Ok ich revidiere meine Meinung. Ich habs einfach nur im falschen zusammenhang im buch auf die Problemstellung übertragen.sorry.