2011-09-27 2 views
0

이지도에 데이터를 삽입하는 데 문제가 있습니다. 나는 솔직히 이렇게하는 방법을 알 수는 없지만, 내가 준 코드의 마지막 줄은 내가 고쳐야 할 부분이다.C++에서지도에 복잡한 값 삽입

map<string, vector<vector<Obj*>* >* > the_map; 
vector<vector<Obj*> *>* vectors = new vector<vector<Obj*> *>; 
vector<Obj*> Obj_vector; 
vectors->push_back(&Obj_vector);              
the_map.insert(make_pair(string("field1", &vectors)); //error on this line only 
+8

정말 많은 포인터가 필요합니까? – GManNickG

+0

그게 많은 포인터입니다. Java perchance에서 왔습니까? –

답변

3

이 시도 : 그런데

the_map.insert(make_pair(string("field1"), vectors)); 
         //you forgot this^^ 
         //     | 
         //     & is not needed here 

을, 당신의 코드에서 많은 포인터의 사용을 의심, 특히이 두 라인 :

vector<Obj*> Obj_vector; //this is local variable 
vectors->push_back(&Obj_vector); //inserting address of the local variable 

주소를 삽입 지역 변수의 벡터에?

가 차례 차례로, 당신은 단지 벡터에 삽입 된 주소가 파괴 된 오브젝트를 가리키는 것을 의미 범위를 벗어나 한 후 로컬 변수가 존재하지 않을 것이라고을 조심하고 정의되지 않은 호출 할 것이다 사용 행동.

+1

아, 마침내, 정말 고마워! 그리고 지역 변수 문제 –

+0

을 살펴 보겠습니다. @StephenD : 좋습니다. 로컬 변수 문제를 조사해야합니다. – Nawaz