gpt4 book ai didi

c++ - 如何传递 ostream 对象?

转载 作者:行者123 更新时间:2023-11-28 00:28:22 27 4
gpt4 key购买 nike

我有一个这样的结构

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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com