Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qt5.1 qHash错误_C++_Qt_Qhash - Fatal编程技术网

C++ Qt5.1 qHash错误

C++ Qt5.1 qHash错误,c++,qt,qhash,C++,Qt,Qhash,定义要使用哈希的类时,遇到一些问题。IDE显示错误: 错误C2665:“qHash”:17重载不能转换所有参数 类型D:\Qt\Qt5.1.1\u 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&

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

错误C2665:“qHash”:17重载不能转换所有参数 类型D:\Qt\Qt5.1.1\u 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());       
}

谢谢。在类外声明qHash(),遇到其他错误。错误LNK2005:“unsigned int\uu cdecl qHash(class Person const&)”(?qHash@@yaiabperson@@@Z)已在Listing1_22.obj G:\Code\C++\QT\FoundationOfQtDevelopment\Chapter1\u RecognizeQT\main.obj中定义。您需要在cpp文件中移动qHash函数实现,就像任何其他函数一样。