在outfile = fstream(filename);
显示我private 'ios_base::operator=(const ios_base&)' is inaccessible
,我不知道如何解决它,我正在使用clion编译它,但对于Mac,没有问题
class ErrorHandler{
private:
std::fstream outfile;
public:
ErrorHandler(char const filename[]) {
outfile = fstream(filename);
outfile << filename << " opened" << endl;
}
~ErrorHandler(){
}
void warn(char const message[]){
cout << message << endl;
outfile << message << endl;
}
void terminate(char const message[]){
cout << message << endl;
outfile << message << endl;
exit(1);
}
};
int main() {
ErrorHandler h("log.txt");
h.warn("Error 10: this is your first warning");
h.warn("Error 20: I warned you");
h.terminate("Error 30: Told you so.");
return 0;
}
答案 0 :(得分:-1)
您的问题是,您无法将一个fstream
分配给另一个,这正是您在分配时所发生的事情。
您有几个选项,但最简单的方法是将outfile
声明为std::fstream*
,然后在您的构造函数中声明:
outfile = new fstream(filename);
请记住在析构函数中删除它。