使用流操作符的C++代碼失敗。我無法弄清楚,爲什麼第二次打印「DEF」不工作::爲什麼第二條語句是打印十六進制值
#include <iostream>
#include <sstream>
struct logger :public std::ostringstream {};
struct logger_flush {};
logger_flush endl;
std::ostream& operator << (std::ostream& os, const logger_flush& lf) {
logger& oss = dynamic_cast<logger&>(os);
std::cout << oss.str() << std::endl;
}
int main()
{
logger() << 100 << "ABC?" << endl;
logger() << "DEF" << endl;
}
輸出是:
100ABC?
0x40168d
似乎與gcc一起工作。 http://ideone.com/XylUCx – mkaes
甚至不爲我編譯。您在運營商<<功能中沒有返回任何內容。 – user1052842
@ user1052842 - 我認爲這應該是一個警告。 –