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

how to pass a ofstream to a function and save it into a member variable

我有这个代码:

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;

std::ofstream doesn't have a copy assignment operator. You have to move it or swap.

必须在 class 的定义点初始化引用。所以你必须创建一个构造函数并使用初始化列表初始化 myfile:

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

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

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

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