【发布时间】:2015-01-01 00:23:50
【问题描述】:
我想将输入/输出封装到一个函数中并从 main 调用该函数,但是一旦我这样做了,编译器就会向我显示奇怪的错误
ifstream open_file(){
ifstream in;
string filename;
cout << "Plean Enter File Name: ";
cin >> filename;
in.open(filename.c_str());
while(true){
if (in.fail()){
cout << "Plean Enter File Name Again: ";
cin >> filename;
in.clear();
in.open(filename.c_str());
}
else
break;
}
return in;
}
从 main 调用它
int main(){
ifstream in;
in = open_file();
return 0;
}
错误(7 个错误)
Description Resource Path Location Type
‘std::basic_streambuf<_CharT, _Traits>::basic_streambuf(const std::basic_streambuf<_CharT, _Traits>&) [with _CharT = char; _Traits = std::char_traits<char>]’ is private Standford.Programming line 802, external location: /usr/include/c++/4.8/streambuf C/C++ Problem
【问题讨论】:
-
Ifstream 没有复制构造函数。请参阅问题Returning ifstream in a function。
-
在 C++11 中,
std::ifstream是可移动的。
标签: c++