首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将元素插入到QSet类中

将元素插入到QSet类中
EN

Stack Overflow用户
提问于 2012-02-19 01:11:04
回答 2查看 1.7K关注 0票数 2

我有以下类:

代码语言:javascript
复制
class UnionFuzzySet : public FuzzySet
{
public:
    UnionFuzzySet();
    void addActivatedFuzzySet(const ActivatedFuzzySet &set);
    double getValue(double value);

private:
    QSet<ActivatedFuzzySet> subConclusions;
};

和方法addActivatedFuzzySet(...):

代码语言:javascript
复制
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)‘

请告诉我,我哪里搞错了?

EN

回答 2

Stack Overflow用户

发布于 2012-02-19 01:19:50

QSet在内部使用哈希表。但是要将项目存储在哈希表中,您应该能够计算项目的哈希值。qHash函数会计算项目的哈希值。

如你所见,它是一些预定义的重载,允许你计算标准类型的哈希,但是如果你想存储ActivatedFuzzySet,你应该定义接受你的ActivatedFuzzySet的函数qHash,如下所示:

代码语言:javascript
复制
uint qHash(const ActivatedFuzzySet& value)  
{
    //calculate hash here
}
票数 6
EN

Stack Overflow用户

发布于 2012-02-19 01:17:58

不能将所有数据类型设置为qhash中的模板。请阅读qt文档页面:http://developer.qt.nokia.com/doc/qt-4.8/qset.html#details

如果你设置了一个指向你的类型的指针,而不是类型,它应该是可以的

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9343251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档