2014-10-06 2 views
-1

Я пытаюсь использовать метод std :: vector push_back для вставки объектов Node в вектор, который хранит объекты шаблона шаблона. Ошибка, которую я получаю, я верю, говорит, что ввод, который я использую для метода push_back, не является правильным типом? Может кто-нибудь, пожалуйста, объясните мне это?Ошибка с std :: vector push_back

+0

'vector > v;' достаточно для создания вектора. Здесь нет нового. Обратите внимание, что это создает локальную переменную. То же самое с вашей картой. Если они являются членами класса, вам не нужно снова помещать их в конструктор. Это нецелесообразно. –

+0

Лучшее, что нужно сделать, это опубликовать короткий полный пример, поэтому нам не нужно угадывать, как выглядят ваши определения классов и т. Д. Ваш конструктор выглядит совершенно неправильно. Если вы хотите инициализировать переменные-члены, используйте список инициализаторов, не создавайте новые переменные, которые немедленно выходят за рамки. –

+0

Хорошо, поэтому я удалил бессмысленный вектор и карту, которые были созданы в конструкторе, но я все равно получаю ту же ошибку. – user2932450

ответ

2

Судя по сообщению об ошибке, это выглядит как v (член класса, не странно и бессмысленно локальные переменных в конструкторе) объявляются vector<int>* (или, возможно, vector<T>*), когда оно должно быть vector<Node<T>>.

+0

Правильно, это объявлено как вектор из-за тестового примера, который я использую. Я добавлю редактирование, которое показывает тестовый пример. – user2932450

+1

@ user2932450: Так почему же вы пытаетесь поместить в него 'Node '', когда он хранит 'int'? –

+0

Узел и PriorityQueue - оба класса шаблонов. PriorityQueue может хранить Узлы любого типа. Таким образом, вектор >, v, может хранить Узлы любого типа. – user2932450

Смежные вопросы