Qt 在QSet类中插入元素

Qt 在QSet类中插入元素,qt,Qt,我有以下课程: class UnionFuzzySet : public FuzzySet { public: UnionFuzzySet(); void addActivatedFuzzySet(const ActivatedFuzzySet &set); double getValue(double value); private: QSet<ActivatedFuzzySet> subConclusions; }; 类联合模糊集:公共

我有以下课程:

class UnionFuzzySet : public FuzzySet
{
public:
    UnionFuzzySet();
    void addActivatedFuzzySet(const ActivatedFuzzySet &set);
    double getValue(double value);

private:
    QSet<ActivatedFuzzySet> subConclusions;
};
类联合模糊集:公共模糊集
{
公众:
联合模糊集();
void addActivatedFuzzySet(const ActivatedFuzzySet&set);
双值(双值);
私人:
QSet分包结论;
};
方法addActivatedFuzzySet(…):

void UnionFuzzySet::addActivatedFuzzySet(const ActivatedFuzzySet&set)
{

此->子结论所有数据类型都不能设置为qhash中的模板。 请阅读qt文档页面:


如果您将指针设置为指向您的类型而不是类型,则它应该是ok的。
QSet
在内部使用哈希表。但要将项存储在哈希表中,您应该能够计算项的哈希。
qHash
函数会计算项的哈希

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

uint qHash(const ActivatedFuzzySet& value)  
{
    //calculate hash here
}

但是他想要一个基于项等价的集合,而不是基于指针等价的集合。
uint qHash(const ActivatedFuzzySet& value)  
{
    //calculate hash here
}