理解错误默认定义是错误的


#include <iostream>
#include <fstream>
void ReadFile(ifstream in);
int main() {
ifstream in("handout.txt");
ReadFile(in);
return 0;
}
void ReadFile(ifstream  in){
while(true){
string word;
in >> word;
if(in.fail()) break;
cout << word << endl;
}
}

我是C++的新手,正在尝试探索。只需从函数定义和声明void ReadFile(ifstream & in)中删除& in,就可以正常工作。我犯了一系列错误,我正在努力理解。

C:UserssamruDownloadssimple-projectsimple-projectsrcaverage.cpp:39: error: use of deleted function 'std::basic_ifstream<char>::basic_ifstream(const std::basic_ifstream<char>&)'
ReadFile(in);
^
c:qtqt5.1.1toolsmingw48_32libgcci686-w64-mingw324.8.0includec++fstream:427: 'std::basic_ifstream<char>::basic_ifstream(const std::basic_ifstream<char>&)' is implicitly deleted because the default definition would be ill-formed:
class basic_ifstream : public basic_istream<_CharT, _Traits>
^
c:qtqt5.1.1toolsmingw48_32libgcci686-w64-mingw324.8.0includec++fstream:427: error: use of deleted function 'std::basic_istream<char>::basic_istream(const std::basic_istream<char>&)'

通过删除&,您现在正在使ReadFile函数使用一个fstream的副本,而不是它不能做的引用

最新更新