Приветствую всех,
Можно ли создать безопасный в будущем оператор сравнения (==) на C ++?
Проблема, с которой я столкнулся, заключалась в том, что у нас есть класс с несколькими членами. У нас есть оператор сравнения для проверки того, имеет ли экземпляр-1 объекта те же значения, что и экземпляр-2.
то есть мы можем сделать
class blarg {
.....
};
.....
blarg b1(..initializers...);
blarg b2 = b1;
if (b1 == b2) {
... then do something ....
}
Однако у меня был сотрудник, который добавил новый член в класс, но не удалось обновить оператор сравнения. Это привело к проблемам, которые нам потребовалось время, чтобы разобраться.
Есть ли практика кодирования, я имею в виду другую , кроме проверки кода (которая для нас не удалась) или метода кодирования, дизайна, шаблона, волшебные бобы, что-нибудь, что может помочь избежать подобных ситуаций?
Моей первой реакцией было использование команды memcmp
. Однако после чтения записи о переполнении стека для « Сравнение структур в C и C ++ » Я вижу, что это может быть проблематично из-за того, что классы C ++ имеют внутри не только данные-члены.
Как другие с этим справляются?
Заранее благодарим за помощь.