我很困惑为什么这行显示PC中的错误,但Mac可以使用它

时间:2016-06-18 08:20:25

标签: c++ fstream

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;
}

1 个答案:

答案 0 :(得分:-1)

您的问题是,您无法将一个fstream分配给另一个,这正是您在分配时所发生的事情。

您有几个选项,但最简单的方法是将outfile声明为std::fstream*,然后在您的构造函数中声明:

outfile = new fstream(filename);

请记住在析构函数中删除它。