Учитывая определенный тип пользователя, такие как:Должен ли я перегружать каждый оператор для того, чтобы класс вел себя как одна из его переменных-членов?
struct Word{
std::string word;
Widget widget;
};
Есть ли способ, чтобы сделать каждый перегруженный оператор класса ведут себя точно так же, как если бы это была просто строка? Или я должен реализовать класс следующим образом:
struct Word{
bool operator < (Word const& lhs) const;
bool operator > (Word const& lhs) const;
bool operator <= (Word const& lhs) const;
bool operator => (Word const& lhs) const;
bool operator == (Word const& lhs) const;
bool operator != (Word const& lhs) const;
//etc...
std::string word;
Widget widget;
};
убедившись, что я объяснить для каждой перегруженной операции строка содержит, и применяя поведение к только строковому значению.
это просто для сравнения 'слово' в вашем классе? – user1810087
Ну, вы могли бы дать ему оператора преобразования, но это не идеально. – chris
@itwasntpete да, виджет следует игнорировать при создании реляционных сравнений –