c++ - Qt 5.1 qHash 错误

标签 c++ qt qhash

我在定义类使用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/

相关文章:

c++ - 派生类中的析构函数标记为 noexcept(false)

c++ - Qt 视频流应用程序 : no service found for qt. mediaplayer

c++ - 是否有可供使用的设置对话框?

c++ - 我可以在同一个文件夹中有两个 .pro 文件吗?

c++ - QMutableHashIterator - 没有合适的默认构造函数

c++ - QHash 迭代器示例 - 运算符 << 不匹配?

c++ - 取消引用无效指针时如何在 Visual C++ 2017 调试器中出错?

c++ - unordered_map - {{key,value},{key,value}} 语法无效

qt - 禁用 QGroupBox 标题阴影(又名 eclipse 刻)

c++ - QString 内置 64 位哈希函数?