Warum kein std::ostream::operator<<(const char*)?



  • Hi Leute,

    offensichtlich hat std::ostream ja weder operator<<(const char*) bzw. operator<<(const std::string&). Gibt es dafür gute Gründe? Bekomme ich Probleme wenn ich diese Operatoren in einer abgeleiteten Klasse implementiere?

    Mein Problem ist eben, dass bei einem temporären ostream Objekt std::operator<<(std::ostream&, const char*) nicht direkt angewendet werden kann (da ja zunächst const), sondern std::ostream::operator<<(const void*) angewendet wird. Damit ergibt der Code

    std::ostream(std::cout.rdbuf()) << "Hello" << " World!\n";
    

    folgende Ausgabe:

    0x???????? World!
    

    Grüße,
    Pascal



  • luciensan schrieb:

    ...offensichtlich hat std::ostream ja weder operator<<(const char*) bzw. operator<<(const std::string&). Gibt es dafür gute Gründe?...

    Doch, hat er. Die operatoren sind aber nicht als Member definiert, sondern als freie Funktionen. Deshalb klapt es auch nicht.


Log in to reply