使用流操作符的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 - 我认为这应该是一个警告。 –