2010-05-05 17 views
17

Estoy usando Cygwin con GCC, y en última instancia, quiero leer en un archivo de caracteres en un vector de caracteres, y el uso de este códigoC++ error vector.push_back: solicitud de miembro 'push_back' ..., que es de tipo no de clase 'vector (char, allocator (char))()()'

#include <fstream> 
#include <vector> 
#include <stdlib.h> 

using namespace std; 

int main (int argc, char *argv[]) 
{ 
    vector<char> string1(); 
    string1.push_back('a'); 

    return 0; 
} 

genera este error en tiempo de compilación:

main.cpp: In function int main(int, char**)': main.cpp:46: error: request for member push_back' in string1', which is of non -class type std::vector >()()'

he intentado esto con un vector de enteros y cadenas también y tenían el mismo problema.

Respuesta

42

No utilice paréntesis para invocar el constructor por defecto:

vector<char> string1; 

lo contrario, este declara una función que no toma string1 argumentes y devuelve un vector<char>.

6

Elimina los paréntesis en la declaración del vector - hacen que sea una declaración de función y no una declaración de vector.