我有以下类:
class UnionFuzzySet : public FuzzySet
{
public:
UnionFuzzySet();
void addActivatedFuzzySet(const ActivatedFuzzySet &set);
double getValue(double value);
private:
QSet<ActivatedFuzzySet> subConclusions;
};和方法addActivatedFuzzySet(...):
void UnionFuzzySet::addActivatedFuzzySet(const ActivatedFuzzySet &set)
{
this->subConclusions << set;
}它不适用于编译错误:
c:\QtSDK\Desktop\Qt\4.8.0\msvc2010\include\QtCore\qhash.h:882:字符: c:\QtSDK\Desktop\Qt\4.8.0\msvc2010\include\QtCore/qhash.h(62)::' qHash‘:16个重载中没有一个可以转换所有参数类型c:\QtSDK\Desktop\Qt\4.8.0\msvc2010\include\QtCore\qhash.h:882:可以是'uint char(QHash)’c:\QtSDK\Desktop\Qt\4.8.0\msvc2010\include\QtCore/qhash.h(63):或'uint qHash(uchar)‘c:\QtSDK\Desktop\Qt\4.8.0\msvc2010\include\QtCore/qhash.h(64):or 'uint char(Signed char)’c:\QtSDK\Desktop\Qt\4.8.0\msvc2010\include\QtCore/qhash.h(65):or 'uint qHash(ushort)‘c:\QtSDK\Desktop\Qt\4.8.0\msvc2010\include\QtCore/qhash.h(66):or 'uint qHash(QHash)’)‘c:\QtSDK\Desktop\Qt\4.8.0\msvc2010\include\QtCore/qhash.h(67):or 'uint qHash(uint)’c:\QtSDK\Desktop\Qt\4.8.0\msvc2010\include\QtCore/qhash.h(68):or 'uint qHash(int)‘c:\QtSDK\Desktop\Qt\4.8.0\msvc2010\include\QtCore/qhash.h(69):or 'uint qHash(ulong)’c:\QtSDK\Desktop\Qt\4.8.0\msvc2010\include\QtCore/qhash.h(77):or 'uint qHash(quint64)‘:\QtSDK\Desktop\Qt\4.8.0\msvc2010\include\QtCore/qhash.h(77):or 'uint qHash(Quint64) 'uint or’uint qHash(qint64)‘c:\QtSDK\Desktop\Qt\4.8.0\msvc2010\include\QtCore/qhash.h(87):or 'uint qHash(QChar)‘\Desktop\Qt\4.8.0\msvc2010\include\QtCore/qhash.h(87):or 'uint qHash(const QByteArray &)’c:\QtSDK\Desktop\Qt\4.8.0\msvc2010\include\QtCore/qhash.h(89):or 'uint qHash(const QString &)‘c:\尝试匹配参数列表时出现QtSDK\Desktop\Qt\4.8.0\msvc2010\include\QtCore/qhash.h(90):或'uint qHash(const QStringRef &)‘c:\QtSDK\Desktop\Qt\4.8.0\msvc2010\include\QtCore/qhash.h(91):或'uint QBitArray (const ActivatedFuzzySet &)’'(const ActivatedFuzzySet)‘
请告诉我,我哪里搞错了?
发布于 2012-02-19 01:19:50
QSet在内部使用哈希表。但是要将项目存储在哈希表中,您应该能够计算项目的哈希值。qHash函数会计算项目的哈希值。
如你所见,它是一些预定义的重载,允许你计算标准类型的哈希,但是如果你想存储ActivatedFuzzySet,你应该定义接受你的ActivatedFuzzySet的函数qHash,如下所示:
uint qHash(const ActivatedFuzzySet& value)
{
//calculate hash here
}发布于 2012-02-19 01:17:58
不能将所有数据类型设置为qhash中的模板。请阅读qt文档页面:http://developer.qt.nokia.com/doc/qt-4.8/qset.html#details
如果你设置了一个指向你的类型的指针,而不是类型,它应该是可以的
https://stackoverflow.com/questions/9343251
复制相似问题