operator << macht mich fertig



  • Hallo,
    ich sitze grade verzweifelt hier und versuche den operator << für meine Klasse zu überladen.

    Meine Klasse sieht in etwa so aus:

    //CurseStream.h
    class CurseStream
    {
    public:
      CurseStream(int x=0, int y=0)
      //...
    };
    
    template <typename T>
    CurseStream & operator << (CurseStream &stream, T& value);
    
    //CurseStream.cpp
    template <typename T>
    CurseStream & operator << (CurseStream &stream, T& value)
    {
    	ostringstream sstr;
    
    	sstr << value;
    	stream.Write(Line, sstr.c_str());
    
    	return stream;
    }
    

    Benutzen möchte ich den Stream dann wie folgt:

    CurseStream CurrentStream;
    
    	CurrentStream << string("hallo");
    	CurrentStream << 5;
    

    Allerdings kriege ich folgende Meldung:

    gcc schrieb:

    menu.cpp:46: no match for `CurseStream& << int' operator
    * ncurse_utils.h:30: candidates are: CurseStream& operator<<(CurseStream&, T&) [with T = int]

    Wie mache ich das also richtig, danke für jede Hilfe!

    EDIT:Die Frage wurde bestimmt schon beantwortet, aber man mit dem Forum nicht vernünftig nach << suchen!



  • T& ist eine Referenz auf ein nicht-konstantes Objekt, "5" ist aber konstant -> "const T&".



  • Danke, so einfach kann es manchmal sein und ich sehs trotzdem nicht.


Anmelden zum Antworten