字典定义如下:
typedef boost::tuple<conn_ptr, handler_ptr, rdp_ptr> conn_tuple;
typedef std::map<GUID, conn_tuple> conn_map;
Run Code Online (Sandbox Code Playgroud)
我们遇到了编译错误:
错误9错误C2678:二进制'<':找不到运算符,它接受类型为'const GUID'的左手操作数(或者没有可接受的转换)c:\ program files(x86)\ microsoft visual studio 11.0\vc \包括\ xstddef
然后我们解决它:
struct GUIDComparer
{
bool operator()(const GUID & Left, const GUID & Right) const
{
// comparison logic goes here
if( (Left.Data1 == Right.Data1) && (Left.Data2 == Right.Data2) &&
(Left.Data3 == Right.Data3) && (memcmp(Left.Data4 , Right.Data4,sizeof(Right.Data4))==0) )
{
return true;
}
return false;
}
};
typedef boost::tuple<conn_ptr, handler_ptr, rdp_ptr> conn_tuple;
typedef std::map<GUID, conn_tuple, GUIDComparer> conn_map;
Run Code Online (Sandbox Code Playgroud)
现在,所有编译,但然后我们在运行时得到一个异常(无效的运算符<).
我不知道出了什么问题,如果有人可以提供帮助,我会很高兴