重载结构运算符

时间:2016-11-26 14:29:32

标签: c++ operator-overloading

试图找出在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,所以语句“HEYYYYYY111”应该始终打印..

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

现在,我就像这样定义了常量。只是为了测试,这将始终返回true,并且上面的If循环应该打印出来。但它没有

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

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

1 个答案:

答案 0 :(得分:0)

这样做:

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

使用“*”访问值(在本例中为对象),它应该调用重载的运算符。