Векторные ошибки при инициализации и push_back пар - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь создать вектор пар, объект на первом месте и список указателей на объекты во втором. Тем не менее, я получаю эту ошибку, что нет соответствующей функции.

Query blank_query();
std::list<Movie_Data*> blank_list;
std::vector<std::pair<Query,std::list<Movie_Data*>>> vec (Hsize,std::make_pair(blank_query,blank_list));

Я получаю эту ошибку

hash_table.cpp:128:47: error: no matching function for call to ‘std::vector<std::pair<Query, std::__cxx11::list<Movie_Data*> > >::vector(int&, std::pair<Query (*)(), std::__cxx11::list<Movie_Data*> >)’
  (Hsize,std::make_pair(blank_query,blank_list));

Другой пример

hash_tbl.push_back(std::make_pair(blank_query,blank_list));

Ошибка

hash_table.cpp:177:61: error: no matching function for call to ‘std::vector<std::pair<Query, std::__cxx11::list<Movie_Data*> > >::push_back(std::pair<Query (*)(), std::__cxx11::list<Movie_Data*> >)’
    hash_tbl.push_back(std::make_pair(blank_query,blank_list));

1 Ответ

1 голос
/ 23 апреля 2020

Вы жертва неприятного разбора. Эта строка

Query blank_query();

фактически объявляет функцию с именем blank_query, которая не принимает аргументов и возвращает Query.

. Вам нужно сделать что-то вроде:

Query blank_query{};

для создания Query объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...