如何在C++中检查输出流是否是std :: cout?

riz*_*ize 2 c++ cout exception stream

我正在实现输出流运算符<< overload,我需要检查输出流参数os是std :: cout,如果没有,抛出std :: runtime_error - 我该如何检查它?

   friend std::ostream& operator<<(std::ostream& os, const Software &soft)
Run Code Online (Sandbox Code Playgroud)

cdh*_*wie 8

我怀疑会导致你认为你必须这样做的那种逻辑,但如果你真的想......

if (&os != &std::cout) {
    throw std::runtime_error(/* ... */);
}
Run Code Online (Sandbox Code Playgroud)

  • 你仍然觉得你应该采取不同的方法.使用代码可能会调用此重载与其他一些流,这将编译得很好,即使它会在以后爆炸.通常,如果您必须强制执行某些参数是特定值,那么您做错了.让编译器尽可能地帮助您. (2认同)