2010-06-04 85 views
1

我有一個向量接受GlDouble向量的向量。但是當我試圖推一個它說:無法推送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

你能給我們你想編譯的代碼嗎? – 2010-06-04 02:25:34

回答

3

編輯:後新增加的,這個問題是不是常量 - 問題是,你要推錯誤的類型。

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. 

想想你是否只有一個雙打矢量;你push_back一個double到vector中,你不會push_back另一個vector。

+0

我從來沒有使用const關鍵字 – jmasterx 2010-06-04 02:25:03

+0

你確定沒有隱式使用嗎?如果vector是一個類的成員,並且你在一個const成員函數中,那麼它是隱含的const。或者如果它是一個右值(臨時),你可能會看到類似的效果? – Peter 2010-06-04 02:26:58

+0

此外,const關鍵字在C++中通常被認爲是有用的 - 如果其他程序員必須與您的代碼進行互操作,例如,如果您的成員函數是常量正確的,他們可能會更容易。可能值得研究:) – Peter 2010-06-04 02:29:49

3

這與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>