我试图在我的类中重载小于运算符“<”,如下所示:
//header file
class HuffmanNode{
private:
...
...
int frequency;
public:
...
...
bool operator<(const HuffmanNode &rhs); //overload less than operator
};
Run Code Online (Sandbox Code Playgroud)
//cpp file
bool HuffmanNode::operator<(const HuffmanNode &rhs){
return frequency < rhs.frequency;
}
Run Code Online (Sandbox Code Playgroud)
我希望能够按如下方式比较节点:
bool HuffmanTree::compareNode(const HuffmanNode &a, const HuffmanNode &b){
if (a < b){
return true;
}
else{
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是找到一种方法将两个节点作为常量进行比较。我收到一条错误消息,指出我的运算符重载方法需要标记为 const,但将标头中的代码更改为
const bool operator<(const HuffmanNode &rhs);
Run Code Online (Sandbox Code Playgroud)
和cpp文件代码
const bool HuffmanNode::operator<(const HuffmanNode &rhs){
return frequency < rhs.frequency;
}
Run Code Online (Sandbox Code Playgroud)
似乎没有消除错误。
我已经检查了这个解决方案,但使用friend关键字似乎也不起作用。
谢谢你的帮助!