std::ios_base::ios_base(const std::ios_base&)' is private 错误

来源:互联网 发布:海康威视监控网络设置 编辑:程序博客网 时间:2024/05/18 04:16

代码如下:

inline ostream operator<<(ostream& os, const istring s)
{
    return os<<string(s.c_str(), s.length());
}

 

编译它出现:std::ios_base::ios_base(const std::ios_base&)' is private 错误。

这是因为流作为参数传递时必须通过引用传递,所以正确的代码是

 

inline ostream& operator<<(ostream& os, const istring s)
{
    return os<<string(s.c_str(), s.length());

}


用std::ifstream,std::ofstream作为函数参数传递时,必须通过引用传递,因为其copy方法被私有化,从而保证对象的唯一性。

正确代码

  3 #include <iostream>  4 #include <fstream>  5 using namespace std;  6  7 OrderEntryMsg ReadOrderEntryMsg(ifstream &infile)  8 {  9     OrderEntryMsg msg; 10     infile.seekg(sizeof(MsgHeader), ios::cur); 11     infile.read((char*)&msg, sizeof(OrderEntryMsg)); 12     return msg; 13 }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

错误代码

  7 OrderEntryMsg ReadOrderEntryMsg(ifstream infile)  8 {  9     OrderEntryMsg msg; 10     infile.seekg(sizeof(MsgHeader), ios::cur); 11     infile.read((char*)&msg, sizeof(OrderEntryMsg)); 12     return msg; 13 }

阅读全文
0 0
原创粉丝点击