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。