Problem beim überladen des Ausgabeoperators <<
-
Hi Leute,
ich habe heute in der Schule mal versucht, denn Ausgabeoperator << zu überladen. Ich deklariere und initialisiere diese Funktion außerhalb einer Klasse CBruch. Hier mal die Initialisierung:
//--------------------------------------------------------------------------- // Funktion: operator<<(ostream&, CBruch&) // Aufgabe : gibt den Bruch aus //--------------------------------------------------------------------------- ostream& operator<<(ostream& os, CBruch Bruch) { os << Bruch.GetZaehler(); }Laut meinem Lehrer und nach den Code-Beispielen aus Büchern, müsste es so funktionieren, aber es funzt weder mit Code::Blocks noch mit CBuilder 6 von Borland. Ich bekomme folgende Fehlermeldungen:
excepted constructor, destructor, or type conversation before '&' token
excepted ',' or ';' before '&' tokenIch verstehe das nicht ganz. Da fehlt kein Komma und auch kein Semikolon. Wäre nett von euch, wenn ihr mit helfen könntet. Danke schonmal...
MfG Apo
-
Hallo,
Erstmal fehlt hier ein return. Vielleicht fehlt hier auch noch irgendwo ein include <iostream> oder ein std:: vor ostream.
-
Ahhh..., nun funktioniert es. Ich habe wirklich das std:: vor ostream vergessen. Das return habe ich nun auch noch hinzugefügt. Danke für die schnelle Hilfe.
MfG Apo ^^
-
Hi!
#include <fstream> std::ostream& operator<<(std::ostream& os, const CBruch &Bruch) { os << Bruch.GetZaehler(); return os; }Versuchs mal so.
grüße
-
<fstream> enthält in diesem Fall eine Menge überflüssigen Ballast, den du hier nicht brauchst. <iostream> ist übrigens auch nicht ganz optimal (enthält ebenfalls Zeugs, das hier nicht benötigt wird).
<ostream> sollte es eigentlich sein (und <istream>, falls auch ein operator>> hinzukommt).