C ++:variables'std :: ifstream ifs'有初始值设定项,但是不完整的types
对不起,如果这是相当不好的,但我很新的C ++。 我试图打开一个文件,并阅读使用ifstream
:
vector<string> load_f(string file) { vector<string> text; ifstream ifs(file); string buffer, str_line; int brackets = 0; str_line = ""; while ( getline(ifs, buffer) ) { buffer = Trim( buffer ); size_t s = buffer.find_first_of("()"); if (s == string::npos) str_line += "" + buffer; else { while ( s != string::npos ) { str_line += "" + buffer.substr(0, s + 1); brackets += (buffer[s] == '(' ? 1 : -1); if ( brackets == 0 ) { text.push_back( str_line ); str_line = ""; } buffer = buffer.substr(s + 1); s = buffer.find_first_of("()"); } } } return text; }
但是,我收到以下错误我不太清楚如何解决:
variable 'std::ifstream ifs' has initializer but incomplete type
非常感谢的答复。 请注意,我从来没有忘记#include <fstream>
,因为很多人因为忘记包含标题而出错。
编辑:
事实certificate,我其实已经忘了包括fstream
,但我忘记了由于将该function移动到另一个文件。
这似乎被回答 – #include <fstream>
。
信息的意思是: –
incomplete type
– 类没有被定义为完整的类。 编译器已经看到类如class ifstream;
语句class ifstream;
这使得它能够理解一个类是存在的,但不知道这个类占用了多less内存。
前向声明允许编译器更有意义:
void BindInput( ifstream & inputChannel );
它理解类存在,并且可以通过代码发送指针和引用,而不能创build类,查看类中的任何数据,或者调用类的任何方法。
has initializer
有点多余,但是说,不完整的对象正在创build。