Wie die Umsetzung in C++ (un -) Gleichheit Operatoren für Aggregat-Strukturen?

Manchmal habe ich Strukturen wie diese --

struct aggregate1 {
  std::string name;
  std::vector<ValueT> options;
  size_t foobar;
  //...
};

-- wo (un -) Gleichheit ist einfach definiert als (un -) Gleichheit aller Mitglieder: lhs_name == rhs_name && lhs_options == rhs_options && lhs_foobar == rhs_foobar.

Was ist der "beste" Weg, um dies zu implementieren? (Am besten wie in: (Laufzeit-)Effizienz, Wartbarkeit, Lesbarkeit)

  • operator== im Hinblick auf operator!=
  • operator!= im Hinblick auf operator==
  • Separate Implementierungen für == und !=
  • Als Mitglied oder als freie Funktionen?

Beachten Sie, dass diese Frage nur über die (un -) Gleichheit ops, wie der Vergleich (<, <=, ...) nicht viel Sinn zu machen für solche Aggregate.

InformationsquelleAutor Martin Ba | 2011-02-14

Schreibe einen Kommentar