Можно ли создать «безопасный» оператор сравнения на C ++?

Приветствую всех,

Можно ли создать безопасный в будущем оператор сравнения (==) на C ++?

Проблема, с которой я столкнулся, заключалась в том, что у нас есть класс с несколькими членами. У нас есть оператор сравнения для проверки того, имеет ли экземпляр-1 объекта те же значения, что и экземпляр-2.

то есть мы можем сделать

class blarg {
    .....
};

.....

blarg   b1(..initializers...);
blarg   b2 = b1;

if (b1 == b2) {
    ... then do something ....
}

Однако у меня был сотрудник, который добавил новый член в класс, но не удалось обновить оператор сравнения. Это привело к проблемам, которые нам потребовалось время, чтобы разобраться.

Есть ли практика кодирования, я имею в виду другую , кроме проверки кода (которая для нас не удалась) или метода кодирования, дизайна, шаблона, волшебные бобы, что-нибудь, что может помочь избежать подобных ситуаций?

Моей первой реакцией было использование команды memcmp . Однако после чтения записи о переполнении стека для « Сравнение структур в C и C ++ » Я вижу, что это может быть проблематично из-за того, что классы C ++ имеют внутри не только данные-члены.

Как другие с этим справляются?

Заранее благодарим за помощь.

10
задан Community 23 May 2017 в 11:47
поделиться