如何将ofstream传递给函数并将其保存到成员变量中

时间:2015-04-17 14:49:58

标签: c++ reference ofstream

我有这段代码:

class myclass
{
       ofstream &myfile;
    public:
       void init(ofstream &file)
       {
              myfile=file;
       }
       void say(int x)
       {
          myfile<<x;
       }
}

但是我收到了这个错误:

     Error  5   error C2280: 'std::basic_ofstream<char,std::char_traits<char>> &std::basic_ofstream<char,std::char_traits<char>>::operator =(const std::basic_ofstream<char,std::char_traits<char>> &)' : attempting to reference a deleted function    

在这一行:

  myfile=file;

我该如何解决?请注意,我想要一个我不应该改变这一行的解决方案:

 myfile<<x;

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

必须在定义类时初始化引用。因此,您必须使用初始化列表创建构造函数并初始化myfile

class myclass {
    ofstream& myfile;
public:
    myclass(std::ofstream& file) : myfile(file) { }

    void say(int x) {
        myfile << x;
    }
}

答案 2 :(得分:0)

引用类型(如ofstream&)必须在初始化时绑定,一旦绑定,它就不能反弹到其他地方。我建议使用以下代码重新绑定:

class myclass {
  ofstream* myfile = nullptr;
public:
  void init(ofstream& file) {
    myfile = &file;
  }
  void say(int x) const {
    if (myfile) (*myfile) << x;
    else ...
  }
};