我有以下课程:
class UnionFuzzySet : public FuzzySet
{
public:
UnionFuzzySet();
void addActivatedFuzzySet(const ActivatedFuzzySet &set);
double getValue(double value);
private:
QSet<ActivatedFuzzySet> subConclusions;
};
Run Code Online (Sandbox Code Playgroud)
方法addActivatedFuzzySet(...):
void UnionFuzzySet::addActivatedFuzzySet(const ActivatedFuzzySet &set)
{
this->subConclusions << set;
}
Run Code Online (Sandbox Code Playgroud)
它不适用于编译错误:
c:\ QtSDK\Desktop\Qt\4.8.0\msvc2010\include\QtCore\qhash.h:882:ошибка:C2665:'qHash':16个重载中没有一个可以转换所有参数类型c:\ QtSDK\Desktop\Qt\4.8.0\msvc2010\include\QtCore/qhash.h(62):可能是'uint qHash(char)'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):或'uint qHash(signed char)'c:\QtSDK\Desktop\Qt\4.8.0\msvc2010\include\QtCore/qhash.h(65):或'uint qHash(ushort)'c:\ QtSDK\Desktop\Qt\4.8.0\msvc2010\include\QtCore /qhash.h(66):或'uint qHash(短)'c:\ QtSDK\Desktop\Qt\4.8.0\msvc2010\include\QtCore/qhash.h(67):或'uint qHash(uint)' c:\ QtSDK\Desktop\Qt\4.8.0\msvc2010\include\QtCore/qhash.h(68):或'uint qHash(int)'c:\ QtSDK\Desktop\Qt\4.8.0\msvc2010\include\QtCore/qhash.h(69):或'uint qHash(ulong)'c:\ QtSDK\Desktop\Qt\4.8.0\msvc2010\include\QtCore/qhash.h(77):或'uint qHash(long) )'c:\ QtSDK\Desktop\Qt\4.8.0\msvc2010\include\QtCore/qhash.h(78):或'uint qHash(quint64)'c:\ QtSDK\Desktop\Qt\4.8.0\msvc2010\include\QtCore/qhash.h(86):或'uint qHash(qint64)'c:\ QtSDK\Desktop\Qt\4.8.0\msvc2010\include\QtCore/qhash.h(87):或'uint qHash(QChar)'c:\ QtSDK\Desktop\Qt\4.8.0\msvc2010\include\QtCore/qhash.h(88) ):或'uint qHash(const QByteArray&)'c:\ QtSDK\Desktop\Qt\4.8.0\msvc2010\include\QtCore/qhash.h(89):或'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 qHash(const QBitArray&)'试图匹配参数列表'(const ActivatedFuzzySet)'
请告诉我,我在哪里弄错了?
QSet在里面使用哈希表.但是要在哈希表中存储项目,您应该能够计算项目的哈希值.qHash函数确实计算项目的哈希值.
正如您所看到的,它是一些预定义的重载,允许您计算标准类型的哈希,但是如果您想要存储ActivatedFuzzySet,则应该定义qHash接受您的函数ActivatedFuzzySet,如下所示:
uint qHash(const ActivatedFuzzySet& value)
{
//calculate hash here
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1654 次 |
| 最近记录: |