gpt4 book ai didi

c++ - 无法分配或复制 iostream 对象?

转载 作者:太空狗 更新时间:2023-10-29 23:24:59 24 4
gpt4 key购买 nike

iostream 和其他流类实际上不是类,而是typedef,对吗?

问题来了,我试图在初始化列表中初始化一个istream对象,但不幸的是我得到了一个错误,代码如下:

class A 
{
public:
A(istream &is=cin): ais(is)
{}

private:
istream ais;
};

不能用g++编译,错误:

synthesized method ‘std::basic_istream<char, std::char_traits<char> >::basic_istream(const std::basic_istream<char, std::char_traits<char> >&)’ first required here 

我搜索了SO,发现iostream不能赋值或复制。但是为什么不能在初始化列表中初始化呢?

因为我认为,初始化列表将调用对象的构造函数/复制构造函数,对吧?

最佳答案

您的代码尝试将一个 istream(传递给构造函数的那个​​)转换为两个 istream,一个传递给构造函数,一个 ais istream 对象表示实际的流本身。只有一个流,无法以某种方式将其变成两个流。

甚至不清楚这意味着什么。如果流中有一些数据,哪个流首先读取它?还是他们都明白了?如果是这样,谁或什么复制了它?

istream 就像一个文件本身。如果您不亲自将数据从一个文件复制到另一个文件,则无法将一个文件变成两个文件。但是,您可以根据需要拥有任意数量的指向同一 istream 的引用或指针。您的问题的解决方案可能是使 ais 成为引用。

关于c++ - 无法分配或复制 iostream 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8785730/

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