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 '&' token

    Ich 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).


Anmelden zum Antworten