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

C++ 如何检查C+中的输出流是否为std::cout+;?,c++,exception,stream,cout,C++,Exception,Stream,Cout,我正在实现一个输出流操作符我怀疑什么样的逻辑会让你认为你必须这样做,但是如果你真的想 if (&os != &std::cout) { throw std::runtime_error(/* ... */); } 只是比较一下地址。但是你为什么要这样?为什么你还要重载操作符?原因是我有一个C实现,它只为标准输出定义,我正在为它创建一个C++包装器。消费代码可能会用其他流调用此重载,这样编译就可以了,即使稍后它会崩溃。一般来说,如果你必须强制某个参数是一个特定的值,你就做

我正在实现一个输出流操作符我怀疑什么样的逻辑会让你认为你必须这样做,但是如果你真的想

if (&os != &std::cout) {
    throw std::runtime_error(/* ... */);
}

只是比较一下地址。但是你为什么要这样?为什么你还要重载<代码>操作符?原因是我有一个C实现,它只为标准输出定义,我正在为它创建一个C++包装器。消费代码可能会用其他流调用此重载,这样编译就可以了,即使稍后它会崩溃。一般来说,如果你必须强制某个参数是一个特定的值,你就做错了。让编译器尽可能地帮助您。您可以忽略
os
参数,然后打印到
std::cout
。@r值更糟糕。@cdhowie我不认为抛出
std::runtime\u错误更好;你说得对,需要一种不同的方法。我认为@benjamin lindley可能最适合使用
Print()
函数或方法。
if (&os != &std::cout) {
    throw std::runtime_error(/* ... */);
}