【发布时间】:2017-10-07 10:28:43
【问题描述】:
首先是代码
“文件.h”
namespace doge
{
struct A
{
void func() = 0;
};
struct Aa : public A
{
std::string id;
void func() override {}
};
template<T>
struct Aaa: public Aa
{
T data;
void func() override {}
};
class D
{
private:
std::unordered_map<Aa,int> intMap;
std::unordered_map<Aa,std::string> stringMap;
};
}
namespace std
{
template<> struct hash<doge::Aa>
{
std::size_t operator()(const doge::Aa & key)
{
return hash<string>()(key.id);
}
};
}
我收到标题中的错误,这似乎表明已生成多个哈希代码。我在错误消息中收到其中 2 个,每个 unordered_map 一个,有人可以帮我找出问题所在。谢谢。
explicit specialization; 'std::hash<_Kty>' has already been instantiated
【问题讨论】: