Qt C++ 运算符 == 重载 Qlist 未调用

Yez*_*fed 1 c++ qt

当我使用 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  );
    }
 }
Run Code Online (Sandbox Code Playgroud)

现在,如果我使用 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); 
Run Code Online (Sandbox Code Playgroud)

我无法获取值或比较节点是否存在于地图中,因为没有调用 operator== !!

如果你能帮忙,我会很感激。

Seb*_*ach 5

这是预期的行为。您正在使用Node*作为您的密钥类型,但没有特殊operator==(Node*,Node*)定义。

你似乎想要的是Node.