我不能将fstream
作为参数传递给函数
赞fname(fstream , char []); /* Prototype */
并致电fname(fs, p);
它抛出错误,
In copy constructor ‘std::basic_ios<char>::basic_ios(const std::basic_ios<char>&)’:
/usr/include/c++/4.8/bits/ios_base.h:786:5: error: ‘std::ios_base::ios_base(const std::ios_base&)’ is private
ios_base(const ios_base&);
我后来才知道我必须使用fstream&
。我只是想知道流的处理方式与对象不同吗?如果是,有人可以告诉一些适当的阅读来源,这样我就不会再搞砸了。
非常感谢。
答案 0 :(得分:3)
正如错误所说
error: ‘std::ios_base::ios_base(const std::ios_base&)’ is private
ios_base(const ios_base&);
,
fstream没有复制构造函数(复制构造函数定义为私有)。您需要按fstream
而不是reference
传递value
对象。
这实际上意味着,您的原型签名需要更改
fname(fstream& , char []);
答案 1 :(得分:2)
Stream对象不可复制。您的复制流中应该发生什么,例如,与文件相关联?