我有一个这样的结构
struct X{
ostream out;
X() : out(cout) {}
...
};
我注意到我必须用 & 定义 out 才能正确地将 cout 作为默认参数传递:ostream &out;我不知道为什么,我也不知道是否还有其他可能性在没有 & 的情况下保留 ostream。此外,当我尝试设置
X x;
ofstream out;
x.out = out;
编译器发现了很多错误...我希望能够将 X::out 设置为 cout 或一个 ofstream。怎么做?
最佳答案
您可能做的最好的事情就是更改您的类设计,这样您就不需要再初始化成员变量了。编译器会阻止复制,基于指针的解决方案会引入所有权问题,std::shared_ptr
会给 std::cout
带来麻烦,引用成员会带来这种可能性悬空引用。
尝试重构您的代码,以便在需要时始终将流作为对外部方法的引用传递:
struct X{
X() {}
void f(std::ostream &os);
};
关于c++ - 如何传递 ostream 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23970613/