不能推送GlDouble的矢量向量?

时间:2010-06-04 02:18:37

标签: c++ vector

我有一个接受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 个答案:

答案 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无关。你的类型错了。 DrawingPointsstd::vector<std::vector<GLdouble>>,表示它包含std::vector<GLdouble>类型的项目。您正在尝试使用push_back(shape_verts)类型的std::vector<std::vector<GLdouble>>。我想你想要的只是让shape_verts成为std::vector<GLdouble>