我很困惑为什么这一行在 PC 中显示错误但 Mac 可以使用它
I'm confused why this line show me the error in PC but Mac can work with it
关于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;
}
您的问题是您无法将一个 fstream
分配给另一个,这正是您分配它时发生的情况。
您有几种选择,但最简单的方法是将 outfile
声明为 std::fstream*
,然后在您的构造函数中:
outfile = new fstream(filename);
记得在析构函数中删除它。
关于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;
}
您的问题是您无法将一个 fstream
分配给另一个,这正是您分配它时发生的情况。
您有几种选择,但最简单的方法是将 outfile
声明为 std::fstream*
,然后在您的构造函数中:
outfile = new fstream(filename);
记得在析构函数中删除它。