我无法在此地图中插入数据。老实说,我无法弄清楚这样做的方法,但我给出的代码的最后一行是我需要修复的部分。
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
答案 0 :(得分: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
将局部变量的地址插入vector?
小心局部变量在超出范围后将不存在,这反过来意味着您刚刚插入到向量中的地址指向被破坏的对象,并使用它会调用未定义的行为。