超载结构运算符



试图找出在C 中实现比较操作员的解决方案。我有一个我想要的结构,只要将其与其他类型的其他结构进行比较。我拿出了一堆代码,只是为了保持所有内容的最小

struct HuffNode{
    //Comparison stuff.. needed in Pqueue
    bool operator> (const HuffNode&) const;
    bool operator>=(const HuffNode&) const;
    bool operator==(const HuffNode&) const;
    bool operator<=(const HuffNode&) const;
    bool operator< (const HuffNode&) const;
};

这是我如何查看这是否有效的测试代码。仅定义两个节点结构,然后尝试比较它们。现在我以为我定义了它,所以==总是返回true,因此" heyyyyyyy111"的语句应始终打印。

 HuffNode *hn1 = new HuffNode(0,0,0,0);
    HuffNode *hn2 = new HuffNode(0,0,0,0);
    if( hn1 == hn2 ){
        cout << "HEYYYYYY111" << endl;
    }

现在,我只有这样的常数。仅仅为了测试,这总是返回的,如果上面的循环应该打印出来。但是它不是

  bool HuffNode::operator==(const HuffNode  &f) const {
        return true;
    }

有人对如何解决这个问题有任何想法吗?不完全确定..我唯一能想到的就是没有正确的论点。我的目标是在模板类中使用它,以便我可以比较两个结构。

只要这样做:

if( *hn1 == *hn2 ){
    cout << "HEYYYYYY111" << endl;
}

使用"*"您访问该值(在这种情况下为对象),它应调用您的重载运算符。

最新更新