传递fstream作为参数

时间:2014-02-02 06:04:44

标签: c++ file stream fstream

我不能将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&。我只是想知道流的处理方式与对象不同吗?如果是,有人可以告诉一些适当的阅读来源,这样我就不会再搞砸了。 非常感谢。

2 个答案:

答案 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对象不可复制。您的复制流中应该发生什么,例如,与文件相关联?