我有一类想要作为成员的输出流,例如:

class GameBase {
protected:
    ofstream m_OutputWriter;
...
}

此类中有一个使用字符串参数并打开m_OutputWriter指向该文件的方法,因此可以使用标准<
但是,我希望默认情况下使流指向cout,这样,如果未指定输出路径,则输出将进入控制台输出而不是文件,并且通过调用类将其完全透明,谁会用
m_OutputWriter << data << endl;

将数据输出到预定目的地。但是,我在这里尝试了其他两个示例,但这些示例似乎都不适合我要尝试的操作。

我在这里想念什么?

最佳答案

除了将std::ofstream作为成员之外,我还将使用返回std::ostream&的函数。

例如:

class GameBase {
    std::ofstream m_OutputWriter;
protected:
    std::ostream& getOutputWriter() {
         if (m_OutputWriter)
             return m_OutputWriter;
         else
             return std::cout;
    }
    ...
}

一个功能齐全的示例:
#include <iostream>
#include <ostream>

std::ostream& get() {
    return std::cout;
}

int main() {
    get() << "Hello world!\n";
}

关于c++ - 如何更改C++输出流以引用cout?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7129037/

10-10 03:51