operator << akzeptiert nur ein Parameter



  • Hallo!

    Ich wollte mir eine logger Klasse schreiben, welche von meinem Programm genutzt wird. Jetzt habe ich mir gedacht das ich dem logger einen überladenen << operator spendiere, aber dieser darf laut Compiler nur einen Parameter akzeptieren 😞

    Die Verwendung sollte dann später so aussehen:

    (*ptrLogger)<<setprio(ERROR)<<setclass(KLASSE)<<"Bla und bla ist passiert!";

    Der operator << soll das ganze dann ungefähr so in einem string formatieren:

    "Fehler: Klasse Object: Bla und bla ist passiert! (ZEIT&DATUM)"

    Das ganze wird dann in eine Datei geschrieben. Das Formatieren wäre nicht so schwierig, nur wie bekomme ich den << operator hin?

    Hat jemand eine Idee wie sich das machen ließe?



  • du mußt den op so schreiben, daß man ihn verketten kann. Das wesentliche ist eigentlich, daß du den Rückgabewert als Referenz definierst. Du mußt freistehende Funktionen schreiben, die deinen Typ in den Stream einfügen:

    Stream& /*wichtig: Referenz zum Verketten*/ operator<<(Stream&stream,const Type&type)
    {
    ... // type in stream einfügen (hängt vom Stream und deinem Type ab)
    return stream; //eigegebener Stream auch wieder zurückgeben
    }



  • Poa, hättest du ein ausführlicheres Beispiel? So komme ich nicht weiter 😕



  • In C++ definiert man eigentlich eigene Streams, in dem man sein eigenen std::basic_streambuf implementiert und nicht in dem man die Streamklassen komplett neu implementiert. Dann hast du auch nicht das Problem.

    Ansonsten http://www.gotw.ca/gotw/004.htm


Log in to reply