c++ - 如何将对 `std::cout` 的引用存储为类成员

标签 c++ cout

我正在使用一个旨在像这样使用的类:

Output() << "Hello.\n";

在其 operator<<我明确使用 std::cout ,但我想要一个解析为“std::cout”的静态类成员,这样我就可以做这样的事情:

copy(some_string_set.begin(), some_string_set.end(), ostream_iterator<string>(Output::m_stream, ", "));

或类似的东西(在我修复静态数据成员之前我无法修复底线。

我什至试过auto ,但是 GCC 抛出了一个

error: 'std::cout' cannot appear in a constant-expression

对着我。我怎样才能做我想做的事? (关键是不必在我的代码中使用 std::cout,而是让所有输出都通过 Output 类)

最佳答案

struct Output
{
    static ostream& stream;
};

ostream& Output::stream = cout;

int main()
{
    Output::stream << "hey";
}

在这里工作正常。

关于c++ - 如何将对 `std::cout` 的引用存储为类成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5081794/

相关文章:

c++ - 将 std::map 作为模板模板参数传递时出错

C++ 在最后一个循环中排除部分循环运算符

android - 如何使用 OpenCV 获得像 Cam Scanner 这样的 Magic Color 效果

c++ - 帮助,澄清我对不合格名称查找 :ISO n3290 Draft 的疑问

c++ - C++ 格式化输出

c++ - 为指针格式化 cout

c++ - 使用 cout 缩进段落

c++ - 在 C++ 中打印 boolean 值

c++ - 负相关程序的一个例子

C++ 分离成员流重载<<