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>>'
我该怎么办?
答案 0 :(得分:0)
如果你想让它完全像std :: cout一样工作,你可以直接使用cout的streambuf构建它:
std::ostream mycout{std::cout.rdbuf()};
但是对于真正的应用程序,如果你想这样做,你应该三思而行,因为它要么没有提供使用std :: cout的好处,要么强迫人们总是使用mycout而不是std :: cout它们可能不会被使用到/忘记/...