我正在使用一些使用std::ofstream*
类型的全局调试记录器的代码。我想将它重定向到std :: cout,因为我实时使用代码,而不是为它设计的批处理方法。
是否可以将其使用的全局std::ofstream*
指针重定向到std::cout
?我知道std::ofstream
继承自std::ios
,它允许用rdbuf()
方法更改流缓冲区,但遗憾的是std::ofstream
重新定义了rdbuf()
方法,这使得以下代码无法编译:
gOsTrace = new std::ofstream();
gOsTrace->rdbuf(std::cout.rdbuf());
还有另一种方法可以将gOsTrace
对象重定向到指向cout
吗?
答案 0 :(得分:8)
具体IOStream流类的rdbuf()
方法隐藏了std::ios
中声明的方法。您需要一个明确的限定才能找到基类重载:
gOsTrace->basic_ios<char>::rdbuf(std::cout.rdbuf());