【发布时间】:2016-01-22 17:13:29
【问题描述】:
我已经有一个使用大量 couts 的大型代码库。 我不能去改变所有现有的 couts。 我可以这样做吗,现有的 cout 添加 FUNCTION , LINE 和时间信息以及需要在 cout 中打印的内容?换句话说,我可以覆盖 cout 以使用我的实现,它将打印字符串以及所有额外信息。 我也愿意做任何其他事情,不一定要压倒一切..
也许我没有解释清楚.. 这就是我需要的。我已经有类似的东西了,
cout<<"This thing does not work";
cout<<"This thing does works but the problem is XYZ";
cout<<"There was a problem reading JHI";
。 . 等等..
在我无法编辑所有现有 couts 的大型代码库中..
我需要这些 couts 来打印类似于..的东西。
cout<<"This thing does not work"<<__FUNCTION__<<__LINE__;
cout<<"This thing does works but the problem is XYZ"<<__FUNCTION__<<__LINE__;
cout<<"There was a problem reading JHI"<<__FUNCTION__<<__LINE__;
希望这会让它更清楚.. 我希望原始 couts 自动(通过一些技巧)进行转换,以便他们也打印这些额外信息..
【问题讨论】:
-
不,您不能覆盖
cout。但是您可以将其替换为类似“my_cout”(有工具)之类的东西,这将是一个宏。 -
对不起,你在这里不走运。我永远不会建议
#definingcout。 -
std::basic_ios::rdbuf。 & 下次在引入对全局变量的依赖项之前考虑一下。
-
@DevSolar
std::cout是一个全局变量。你的问题到底是什么? -
从管理的角度来看,“我不能改变现有的 couts”与“我可以改变现有的 couts 所做的事情”并不相符。您的代码库中没有任何类似的稳定性控制吗?这是一个大量 合同违规,比您实际替换代码中的原始调用要严重得多。我不可能在代码审查中接受它。只是说。
标签: c++ function c++11 overloading overriding