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.