Qt 5.1 qHash错误

时间:2013-12-16 08:53:29

标签: c++ qt qhash

当我定义一个使用哈希的类时,遇到一些问题。显示错误:

  

“错误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;
};

1 个答案:

答案 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());       
}