一、错误现象:使用map,自定义的类型作为key,出现错误error C2784
error C2784: “bool std::operator <(const std::basic_string<_Elem,_Traits,_Alloc> &,const _Elem *)”: 未能从“const CDpMysqlConnAttr”为“const std::basic_string<_Elem,_Traits,_Alloc> &”推导 模板 参数
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\string(243) : 参见“std::operator <”的声明
二、原因:
map中的key默认是以less<>升序对元素排序,也就是说key必须具备operator<对元素排序。
平常我们用的基本上都是基本类型元素作为key,不存在这个问题。
当使用自定义类型或者类,作为key时,如果没有自定义operator<,就会出现该错误。
三、解决办法:
修改作为key的类型,添加operator<。