【问题标题】:Qt 5.1 qHash errorQt 5.1 qHash 错误
【发布时间】:2013-12-16 08:53:28
【问题描述】:

当我定义一个使用哈希的类时,遇到一些问题。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;
};

【问题讨论】:

    标签: c++ qt qhash


    【解决方案1】:

    为你的超大类声明 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());       
    }
    

    【讨论】:

    • Thanks.Declare qHash() 在课堂外,遇到其他错误。错误 LNK2005:“unsigned int __cdecl qHash(class Person const &)” (?qHash@@YIAABVPerson@@@Z) 已在 Listing1_22.obj G:\Code\C++\QT\FoundationOfQtDevelopment\Chapter1_RecognizeQT\main.obj 中定义跨度>
    • 你需要在cpp文件中移动qHash函数实现,就像任何其他函数一样。
    猜你喜欢
    • 2015-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-22
    • 2013-07-02
    • 1970-01-01
    相关资源
    最近更新 更多