GUID Comparer错误!

时间:2011-07-14 21:10:03

标签: c++ visual-c++ guid

我编写了以下简单函数 - 一个无序映射,它将2个GUID作为键和值。但是,我认为他们没有定义GUID比较器,因此它会与我尝试过的GUID比较器一起抛出此错误。

 #include <unordered_map>
 #include<iostream>
 #include<stdio.h>
 #include<Objbase.h>
 typedef unordered_map<GUID, GUID, less_guid> Mymap;
 Mymap c1;

 int __cdecl wmain(int /*argc*/, __in_ecount(argc) WCHAR * /*argv[ ]*/)
 {
    GUID TargetC;
    GUID TargetA;
    CoCreateGuid(&TargetC); CoCreateGuid(&TargetA); 
    c1.insert(Mymap::value_type(TargetC,TargetA)); /
    getch();
    return 0;
 }

这是出现的错误: “&gt; c:\ program files(x86)\ microsoft visual studio 10.0 \ vc \ include \ xhash(154):错误C2064:term不计算为带有1个参数的函数 1 GT; class没有定义'operator()'或用户定义的转换操作符到指向函数的指针或函数引用,它接受适当数量的参数“

我迫切需要一个解决方案。我很感激你的意见。谢谢!

1 个答案:

答案 0 :(得分:1)

std::unordered_map的第三个模板参数是哈希函数,第四个模板参数是比较函数:

template<class Key,
         class T,
         class Hash = hash<Key>,
         class Pred = std::equal_to<Key>,
         class Alloc = std::allocator<std::pair<const Key, T> > >
class unordered_map;

您正在传递less_guid,这听起来像一个比较函数,作为第三个模板参数。