小编fer*_*ras的帖子

GUID为std :: map键

字典定义如下:

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)

现在,所有编译,但然后我们在运行时得到一个异常(无效的运算符<).

我不知道出了什么问题,如果有人可以提供帮助,我会很高兴

c++ boost guid stdmap

2
推荐指数
2
解决办法
3410
查看次数

标签 统计

boost ×1

c++ ×1

guid ×1

stdmap ×1