当我定义一个使用哈希的类时,遇到一些问题。显示错误:
“错误C2665:”qHash“:17次重载无法转换所有参数 类型D:\ Qt \ Qt5.1.1_x86 \ 5.1.1 \ msvc2012 \ include \ QtCore \ qhash.h 111 1“
我认为异常代码是重载qHash(const Person& key)。我该如何处理? 我的QT是5.1。
class Person
{
public:
Person(const QString& name,const QString& number);
const QString& name() const;
const QString& number() const;
inline bool operator==(const Person &compare) const
{
return (name()==compare.name())&&(number()==compare.number());
}
uint qHash(const Person &key)
{
return qt_hash(key.name())^qt_hash(key.number());
}
private:
QString m_name,m_number;
};
答案 0 :(得分:2)
声明你的班级的qHash()超大。
class Person
{
public:
Person(const QString& name,const QString& number);
const QString& name() const;
const QString& number() const;
inline bool operator==(const Person &compare) const
{
return (name()==compare.name())&&(number()==compare.number());
}
private:
QString m_name,m_number;
};
uint qHash(const Person &key)
{
return qt_hash(key.name())^qt_hash(key.number());
}