Probleme Operatorüberladung (Anfängerfrage)
-
Guten Morgen,
ich hänge seit einiger Zeit an einem Problem bezüglich des Operatorüberladens fest. Konkret geht es um den Operator " << ", der Werte in eine selbst gebaute Liste übergeben soll (intern ist die Liste als Vector mit Spezialitäten aufgebaut).
In der main-Funktion soll der Aufruf dann so aussehen:
rListe << 4 << 5 << 6;
wobei "rliste" ein Objekt ist, und mit dem "<<" auch verkettet beliebig viele int-Werte übergeben werden können sollen.
Meine Idee war bisher diese:
void operator << (Ringliste& zielliste, int element){ zielliste.elementEintragen(element); }
Leider funktioniert diese Implementation nur mit einem einzigen Element:
rListe<<4
Ein verketteter Aufruf wie im main-Beispiel funktioniert aber leider nicht. Fehlermeldung: invalid operands of types 'void' and 'int' to binary 'operator<<'
Habt ihr eine Idee wo das Problem liegen könnte?
L.G
-
Ja, versuchs mal mit so einer Signatur für den Operator:
Ringliste& operator << (Ringliste& zielliste, int element);
Dadurch ist der Ausdruck
rListe << 4
vom TypRingliste&
und der Operator greift auch beim nächstenint
. So wie du es jetzt da stehen hast, ist der Ausdruckvoid
, aber der Operator will auf der linken Seite des<<
einen Ausdruck haben, der anRingliste&
binden kann, daher geht das nicht.Edit: Achja, bevor die Frage aufkommt - der von mir vorgeschlagene Operator sollte natürlich die übergebene Zielliste zurückgeben. Du kannst dir auch mal ansehen, wie man
<<
fürstd::ostream
(cout
und so) überlädt. Da macht man das genauso.
-
Dieser Beitrag wurde gelöscht!
-
@Finnegan Vielen Dank, jetzt läufts! Im nachhinein logisch, aber von alleine wäre ich niemals darauf gekommen