2010-06-04 2 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

컴파일하려는 코드를 제공 할 수 있습니까? –

답변

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. 

방금 ​​두 배의 벡터가 있다고 생각해보십시오. push_back을 두 번 벡터에 넣으면 다른 벡터를 push_back하지 않습니다.

+0

어디에도 const 키워드를 사용하지 않습니다. – jmasterx

+0

암시 적으로 사용하지 않습니까? 벡터가 클래스의 멤버이고 const 멤버 함수에 있으면 암시 적으로 const입니다. 또는 rvalue (임시) 인 경우 비슷한 효과가 나타날 수 있습니까? – Peter

+0

또한 const 키워드는 일반적으로 C++에서 유용하다고 간주됩니다. 다른 프로그래머가 코드와 상호 운용해야하는 경우 멤버 함수가 const-correct 인 경우 더 쉽게 찾을 수 있습니다. 찾고 가치가있을 수도 있습니다 :) – Peter

3

이것은 const와는 아무런 관련이 없습니다. 유형이 잘못되었습니다. DrawingPointsstd::vector<std::vector<GLdouble>>이며 이는 std::vector<GLdouble> 유형의 항목을 포함 함을 의미합니다. 당신은 push_back(shape_verts)입니다. 유형은 std::vector<std::vector<GLdouble>>입니다. 당신이 원하는 것은 shape_vertsstd::vector<GLdouble>으로 만드는 것입니다.

관련 문제