如何定义自定义的cout?

时间:2016-02-09 02:00:12

标签: c++ c++11

std::streambuf buf;
ostream mycout(&buf);
mycout << "Hellow, World!" << endl;

我使用上面的语句来初始化ostream的一个实例。我想&#34; mycout&#34;完全像&#34; std :: cout&#34;所有输出都将显示到STDOUT(屏幕)。上面的代码不起作用。编译错误:

'std::basic_streambuf<char,std::char_traits<char>>::basic_streambuf': cannot access protected member declared in class 'std::basic_streambuf<char,std::char_traits<char>>'

我该怎么办?

1 个答案:

答案 0 :(得分:0)

如果你想让它完全像std :: cout一样工作,你可以直接使用cout的streambuf构建它:

std::ostream mycout{std::cout.rdbuf()};

但是对于真正的应用程序,如果你想这样做,你应该三思而行,因为它要么没有提供使用std :: cout的好处,要么强迫人们总是使用mycout而不是std :: cout它们可能不会被使用到/忘记/...

相关问题