
Ramesh escribió:
Hello.
I am using projection technique & modify_key in one of my member functions:
Assuming I have the following data in the container:
ObjId ObjIp ObjIndex pMyObj ------------------------------------------------------------------------------------- ID1 10.10.1.2 1 0x10239032 ID2 10.10.1.3 2 0x23423423 ID3 10.10.1.4 3 0x23132423
The member function 'UpdateKeyObjId' accepts the value on column 3 as key & changes the corresponding value for the field in Column 1.
My code seems to work fine for all rows except the last row. When I use modify key on the last record, the app crashes at the highlighted line. I am not sure if my usage of project & modify_key right, could someone please point out if there are any errors in the usage?
Hello Ramesh, At first sight your code appears correct. The only plausible way that I can figure out the offending statement can crash: return MyContainer.get<0>().modify_key(ObjIdit, ll::_1 = param_ObjId); happens if ObjIdit==MyContainer.end(). You can check this by placing an assertion before that: typedef tMyObjMap::index<ObjIndex>::type tMyObjMapByIndex; tMyObjMapByIndex& ObjIndex_index = MyContainer.get<ObjIndex>(); tMyObjMap::index_iterator<ObjIndex>::type it = ObjIndex_index.find(param_ObjIndex); assert(it!=ObjIndex_index.end()); ... If the assertion fails then there's simply no element with the given param_ObjIndex, which I guess you can trace back to some problem elsewhere in your program. HTH, Joaquín M López Muñoz Telefónica, Investigación y Desarrollo