Problem beim Ueberladen von operator>>



  • Hi... ich hab ein ziemlich seltsames Problem und absolut kA was denn eigetnlich falsch ist...

    Folgender Code:

    class Rational
    {
    	// ....
    	friend std::istream& operator>>(std::istream&, Rational&);
    	// ....
    };
    
    std::istream& operator>>(std::istream& stream, Rational& rational)
    {
    	stream >> rational.factor >> rational.denominator;
    	return stream;
    }
    

    Und folgende Fehlermeldungen des GCC (3.3.1)

    D:\code\Allegro\rational\Rational.cpp In function `std::istream& operator>>(std::istream&, Rational&)': 
    D:\code\Allegro\rational\Rational.cpp no match for 'operator>>' in 'stream >>  rational->Rational::factor' 
    error D:\code\Allegro\rational\Rational.cpp:53 candidates are: std::istream& operator>>(std::istream&,  Rational&)
    

    Ich seh den Fehler nicht 😕



  • Hm, sieht eigentlich alles richtig aus. Was für einen Typ hat "factor" ?



  • ok, Fehler gefunden... ich hab <iosfwd> anstelle von <iostream> inkludiert 🙂

    Trotzdem komisch, operator<< konnt ich problemlos kompilieren 😕



  • Gutes Vorbild für solche Klassen: http://www.gotw.ca/gotw/004.htm
    boost:rational gibt es übrigens auch, ist am einfachsten.


Anmelden zum Antworten