С++ ошибка vector.push_back: запрос члена 'push_back', который имеет неклассовый тип 'vector (char, allocator (char)) ()()'

Я использую Cygwin с GCC, и в конечном итоге я хочу прочитать файл символов в вектор символов и использовать этот код

#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;
}

генерирует эту ошибку времени компиляции:

main.cpp: в функции int main(int, char**)': main.cpp:46: error: request for memberpush_back' в string1', which is of non -class typestd::vector > ()()'

Я пробовал это с вектором целых чисел и строк, и у них была та же проблема.


person Dlongnecker    schedule 05.05.2010    source источник


Ответы (2)


Не используйте круглые скобки для вызова конструктора по умолчанию:

vector<char> string1;

В противном случае это объявляет функцию string1, которая не принимает аргументов и возвращает vector<char>.

person Georg Fritzsche    schedule 05.05.2010

Удалите скобки в объявлении vector — они делают его объявлением функции, а не объявлением вектора.

person Eli Bendersky    schedule 05.05.2010