我有一个接受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);
答案 0 :(得分:3)
编辑:新添加之后,问题不是const - 问题是你试图推错类型。
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.
想想你是否只有一个双打矢量;你将一个double推入向量中,你不要再推送另一个向量。
答案 1 :(得分:3)
这与const无关。你的类型错了。 DrawingPoints
是std::vector<std::vector<GLdouble>>
,表示它包含std::vector<GLdouble>
类型的项目。您正在尝试使用push_back(shape_verts)
类型的std::vector<std::vector<GLdouble>>
。我想你想要的只是让shape_verts
成为std::vector<GLdouble>
。