open - C++: variable ''std:: ifstream ifs'' tiene inicializador pero tipo incompleto
ifstream read (1)
Esto parece ser respondido - #include <fstream>
.
El mensaje significa: -
incomplete type
: la clase no se ha definido con una clase completa. El compilador ha visto declaraciones tales como class ifstream;
lo que le permite comprender que existe una clase, pero no sabe cuánta memoria ocupa la clase.
La declaración directa le permite al compilador tener más sentido de:
void BindInput( ifstream & inputChannel );
Entiende que la clase existe, y puede enviar punteros y referencias a través del código sin poder crear la clase, ver cualquier dato dentro de la clase o llamar a cualquier método de la clase.
El has initializer
un aspecto extraño, pero dice que se está creando el objeto incompleto.
Lo siento si esto es bastante noobish, pero soy bastante nuevo en C ++. ifstream
abrir un archivo y leerlo usando 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;
}
Sin embargo, recibo el siguiente error. No estoy seguro de cómo solucionarlo:
variable ''std::ifstream ifs'' has initializer but incomplete type
Respuestas muy apreciadas. Tenga en cuenta que nunca olvidé #include <fstream>
, ya que muchos han recibido el error debido a que simplemente olvidaron incluir el encabezado.
EDITAR:
Resulta que realmente me olvidé de incluir fstream
, pero lo había olvidado debido a mover la función a otro archivo.