Probleme bei Operatorenüberladung



  • Hallo

    Ich versuche mir gereade eine kleine Logfileklasse zu schreiben und dabei taucht folgendes Problem auf: Ich würde gerne per << in das Logfile schreiben und zwar Zahlen und strings, also dachte ich mir, dass ich einen << Operator schreibe und zwar als template Memberfunktion damit er verschiedene`Datentypen aufnehmen kann. Diese wollte ich dann per boost::lexical_cast zu strings verwandeln und in die Datei schreiben, aber mein Linker meckert immer. Zuerst die Funktion:

    template<class Te>
    void chrische::LogFile::operator <<(Te TempText)
    {
    	FileToWriteIn<<lexical_cast<std::string>(TempText);
    }
    

    Dann die Fehlermeldung:

    Error 1 error LNK2019: unresolved external symbol "public: void __thiscall chrische::LogFile::operator<<<char const *>(char const *)" (??$?6PBD@LogFile@chrische@@QAEXPBD@Z) referenced in function _wmain LogFileTest.obj

    Vielen Dank für eure Hilfe

    chrische



  • Steht die Definition in nem Header?



  • Hallo

    Ich verhaue bis heute die Begriffe. 😃 Im Header steht folgendes:

    template<class Te>
    void operator <<(Te TempText);
    

    und in der cpp:

    template<class Te>
    void chrische::LogFile::operator <<(Te TempText)
    {
    	FileToWriteIn<<lexical_cast<std::string>(TempText);
    }
    

    chrische



  • Das muss bei Templates alles in den Header.



  • Hallo

    Danke das hatte ich leider vergessen.

    chrische


Anmelden zum Antworten