Перегрузка операторов в C ++ на самом деле довольно проста.Вероятно, что вы хотите сделать в своем классе узлов:
template<typename MyData>
class Node {
private:
MyData data_;
// ...
public:
// ...
bool operator < (Node const &rhs) const;
};
// ...
template<typename MyData>
bool Node<MyData>::operator < (Node const &rhs) const {
return data_ < rhs.data_;
}
Это перегрузит оператор <
в классе Node
с версией, которая просто вызывает базовый оператор data_
value * <
,
Вы можете поместить любой код внутри функции, кроме ее имени и количества параметров, у которых нет специальных свойств.Вы даже можете использовать это для сравнения разных типов или возврата разных значений.Например, вы можете изменить rhs
в этом примере на int
, тогда вы можете сравнить узлы с целыми числами (например, Node n; if (n < 10) ...
).