【解决问题】使用fstream类时报错尝试引用已删除的函数
-
报错
error C2280: “std::basic_ifstream<char,std::char_traits>::basic_ifstream(const std::basic_ifstream<char,std::char_traits> &)”: 尝试引用已删除的函数 -
原因
在系统声明中有这么一句代码
basic_ifstream(const basic_ifstream&) = delete;
这句话的意思是base_fstream类的拷贝(赋值)构造函数是已删除函数,这样可以防止多个对象同时读取或写入IO缓冲区。(未能理解)
-
解决方法
若ifstream作为函数形参时,将其改为传址pass by reference。
例如将
void init_vs(ifstream);
改写成
void init_vs(ifstream &);