:constを比較するために、C++クラスの 'より小さい'演算子をどのようにオーバーロードできますか?次のように私は私のクラスにオペレータ未満をオーバーロードするために「<」をしようとしています
//header file
class HuffmanNode{
private:
...
...
int frequency;
public:
...
...
bool operator<(const HuffmanNode &rhs); //overload less than operator
};
//cpp file
bool HuffmanNode::operator<(const HuffmanNode &rhs){
return frequency < rhs.frequency;
}
私は次のようにノードを比較できるようにしたい:
bool HuffmanTree::compareNode(const HuffmanNode &a, const HuffmanNode &b){
if (a < b){
return true;
}
else{
return false;
}
}
私が抱えている問題は、2つのノードをconstとして比較する方法を見つけることです。私は私のオペレータのオーバーロードメソッドは、constのとしてマークする必要がありますが、
const bool HuffmanNode::operator<(const HuffmanNode &rhs){
return frequency < rhs.frequency;
}
に
const bool operator<(const HuffmanNode &rhs);
とCPPファイルのコードにヘッダ内のコードを変更すると削除するようには思えないというエラーが出ますエラー。
私はthis solutionをチェックアウトしましたが、friendキーワードを使用してもうまくいきませんでした。
ありがとうございました!
あなたは 'bool operator <(const HuffmanNode&rhs)const;'を使います。 'const'の位置に注意してください。 – songyuanyao