gpt4 book ai didi

c++ - Qt C++ operator == overload Qlist not called

转载 作者:行者123 更新时间:2023-11-30 01:45:17 25 4
gpt4 key购买 nike

当我使用 QList 或 QHashMap 时,我的运算符 == 没有被调用

这是我的代码:

class Node
{
QString _state;
Node* _parent;
// for ID generation purpose
static int _seqNumber;
int _id;
public:
Node();
inline bool operator== (const Node &node) const
{
return ( _id == node._id );
}
}

现在,如果我使用 QHash 为例:

    QHash<Node*, double> hashMap* = new QHash<Node*, double>();
Node* node = new Node();

hashMap->insert(node, 500);

// value is never found, because operator== is not being called
double value = hashMap->value(node);

我无法获取值或比较 map 中是否存在节点,因为未调用 operator==!!

如果您能提供帮助,我将不胜感激。

最佳答案

这是 expected behaviour .您正在使用 Node* 作为键类型,但没有定义特殊的 operator==(Node*,Node*)

您似乎想要的是 Node

关于c++ - Qt C++ operator == overload Qlist not called,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34857741/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com