我有一个类,我希望将输出流作为成员提供给:
class GameBase {
protected:
ofstream m_OutputWriter;
...
}
此类中有一个方法接受一个字符串参数并打开m_OutputWriter指向该文件,因此可以使用标准<<<<<<<<操作者;
但是,我想要的是默认情况下让流指向cout,这样如果未指定输出路径,输出将转到控制台输出而不是文件,并且它将完全透明调用类,谁将使用
m_OutputWriter << data << endl;
将数据输出到预定目的地。然而,我在这里尝试了其他一些例子,但这些例子似乎都不符合我的目的。
我在这里缺少什么?
答案 0 :(得分:2)
为什么流需要成为会员?
struct GameBase {
void out(std::ostream& out = std::cout);
// ...
};
答案 1 :(得分:1)
除了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";
}