Вставка сложных значений в карту в C ++ - PullRequest
0 голосов
/ 27 сентября 2011

У меня проблемы с вставкой данных в эту карту. Я, честно говоря, не могу понять, как это сделать, но последняя строка кода, которую я дал, - это часть, которую мне нужно исправить.

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

1 Ответ

3 голосов
/ 27 сентября 2011

Попробуйте это:

 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

Вставка адреса локальной переменной в вектор?

Остерегайтесь , что локальная переменная не будет существовать после того, как она выйдет из области видимости, что, в свою очередь, означает, что адрес, который вы только что вставили в вектор, указывает на уничтоженный объект и использует его будет вызывать неопределенное поведение.

...