Lia*_*ark 1 c++ operator-overloading
我试图在我的类中重载小于运算符“<”,如下所示:
//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关键字似乎也不起作用。
谢谢你的帮助!
您误解了关键字的使用和定位的概念const。
只是为了澄清:
const T functionName(something);
Run Code Online (Sandbox Code Playgroud)
意味着您functionName返回 T 类型的内容,并且这是一个常量。
现在这个:
T functionName(something) const;
Run Code Online (Sandbox Code Playgroud)
意味着您functionName返回 T 类型的内容,并且该方法不会更改实例中的任何内容,即使将对象声明为 ,也可以安全地使用它const。
第二个选项就是您正在寻找的选项。
| 归档时间: |
|
| 查看次数: |
2337 次 |
| 最近记录: |