如何将 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 ...
}
};
我有这个代码:
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 ...
}
};