我在定义类使用hash时,遇到一些问题,IDE显示错误:
"error C2665: “qHash”: 17 overloads can not convert all parameter types 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;
};
最佳答案
为你的类超大声明 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());
}
关于c++ - Qt 5.1 qHash 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20606702/