1

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

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

1 回答 1

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());       
}
于 2013-12-16T09:04:13.023 回答