Qt 5.1 qHash 错误
Posted
技术标签:
【中文标题】Qt 5.1 qHash 错误【英文标题】:Qt 5.1 qHash error 【发布时间】: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;
;
【问题讨论】:
【参考方案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函数实现,就像任何其他函数一样。以上是关于Qt 5.1 qHash 错误的主要内容,如果未能解决你的问题,请参考以下文章
Qt 5.1 - QMessageBox 错误?如果在隐藏 QDialog 时调用 QMessageBox,则程序退出(0)