试图找出在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;
}
任何人都知道如何解决这个问题?不完全确定..我唯一能想到的就是没有正确的论据。我的目标是在模板类中使用它,以便我可以比较两个结构。
答案 0 :(得分:0)
这样做:
if( *hn1 == *hn2 ){
cout << "HEYYYYYY111" << endl;
}
使用“*”访问值(在本例中为对象),它应该调用重载的运算符。