typedef struct { string strdatabasename; set <string, greater<string> > setdbaccname; } userdbainfo_t; typedef struct { map<int, userdbainfo_t > mapuserdbainfo; } userdbinfo_t; typedef set<string, greater<string> > setnames_t; int main( int argc, char * argv[] ) { ... map<string, userdbinfo_t > maphruserdbinfo; userdbinfo_t structuserdbinfo; userdbainfo_t structuserdbainfo; structuserdbainfo.strdatabasename = strdatabasename; structuserdbainfo.setdbaccname.insert(strdbaccname); structuserdbinfo.mapuserdbainfo.insert(ndatabaseid, structuserdbainfo); maphruserdbinfo.insert(make_pair(strsabun, structuserdbinfo)); <--- compile error here ... } when compile it, got error message.
main.cpp:2778: error: no matching function call 'std::map, std::allocator > >::insert(int&, userdbainfo_t&)' /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_map.h:395: note: candidates are: std::pair, std::_select1st >, _compare, typename _alloc::rebind >::other>::iterator, bool> std::map<_key, _tp, _compare, _alloc>::insert(const std::pair&) [with _key = int, _tp = userdbainfo_t, _compare = std::less, _alloc = std::allocator >] /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_map.h:419: note: typename std::_rb_tree<_key, std::pair, std::_select1st >, _compare, typename _alloc::rebind >::other>::iterator std::map<_key, _tp, _compare, _alloc>::insert(typename std::_rb_tree<_key, std::pair, std::_select1st >, _compare, typename _alloc::rebind >::other>::iterator, const std::pair&) [with _key = int, _tp = userdbainfo_t, _compare = std::less, _alloc = std::allocator >]
what might wrong?
the error message, no matching function call 'std::map, std::allocator > >::insert(int&, userdbainfo_t&), indicates me problem in line:
structuserdbinfo.mapuserdbainfo.insert(ndatabaseid, structuserdbainfo); not line mentioned in question. should be:
structuserdbinfo.mapuserdbainfo.insert(make_pair(ndatabaseid, structuserdbainfo)); if able use c++11 compiler, can use:
structuserdbinfo.mapuserdbainfo.emplace(ndatabaseid, structuserdbainfo);
Comments
Post a Comment