Не можете нажать вектор вектора GlDouble? - PullRequest
1 голос
/ 04 июня 2010

У меня есть вектор, который принимает векторы векторов GlDouble. Но когда я пытаюсь нажать один, он говорит:

Error 1 error C2664: 'std::vector<_Ty>::push_back' : cannot convert parameter 1 from 'std::vector<_Ty>' to 'const std::vector<_Ty> &' c:\Users\Josh\Documents\Visual Studio 2008\Projects\Vectorizer Project\Vectorizer Project\Vectorizer Project.cpp 324

Почему это не позволяет мне продвигать это? Он говорит, что хочет продолжение, но я никогда не указывал это ...

Спасибо

the struct:
struct SHAPECONTOUR{

 std::vector<USERFPOINT> UserPoints;
 std::vector<std::vector<GLdouble>> DrawingPoints;
};

std::vector<std::vector<GLdouble>> shape_verts;

SHAPECONTOUR c;
c.DrawingPoints.push_back(shape_verts);

Ответы [ 2 ]

3 голосов
/ 04 июня 2010

Это не имеет ничего общего с const. Ваши типы не правы. DrawingPoints - это std::vector<std::vector<GLdouble>>, что означает, что он содержит элементы типа std::vector<GLdouble>. Вы пытаетесь push_back(shape_verts), который имеет тип std::vector<std::vector<GLdouble>>. Я думаю, что вы хотите просто сделать shape_verts a std::vector<GLdouble>.

3 голосов
/ 04 июня 2010

Редактировать: после новых дополнений проблема не постоянная - проблема в том, что вы пытаетесь использовать неверный тип.

std::vector<std::vector<GLdouble> > v;
v.push_back(std::vector<GLdouble>()); // works; pushing contained type
v.push_back(std::vector<std::vector<GLdouble> >()); // <-- error: trying to push type of container.

Подумайте, если бы у вас был только вектор двойных чисел; вы толкаете двойной вектор в векторе, вы не толкаете другой вектор в обратном направлении.

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