C ++ оператор равенства

У меня есть следующий оператор равенства:

  bool operator==(const Duration& x, const Duration& y){
return ( x.hrs == y.hrs, x.mins == y.mins, x.secs == y.secs );
}

Я также попробовал:

 bool operator==(const Duration& x, const Duration& y){
return ( (x.hrs == y.hrs) && (x.mins == y.mins) && (x.secs == y.secs) );
}

В моем основном методе у меня есть:

  //Arbitrary Durations - Testing
Duration dTest0 (01,45,12);
Duration dTest1 (01,35,45);
Duration dTest2 (01,35,45);
Duration dTest3 (01,25,05);

if ( dTest0 == dTest1 ){
cout<< "broken" << endl;
}
else{
cout<< "working" << endl;
}

Моя программа продолжает выводить «неработающий», что говорит о том, что dTest0 и dTest1 фактически равны … Где я иду не так?

Дополнительно: если я использую x.getHours == y.getHours... Это ставит красную линию под "." и говорит: «Ошибка: указатель на связанную функцию может использоваться только для вызова функции».

Любой совет будет принят во внимание. Благодарю.

0

Решение

Первая реализация вернет true, только если x.secs == y.secs, Результаты первых двух сравнений будут отброшены. , Оператор оценивает значение своего второго операнда, который в этом случае сводится к просто x.secs == y.secs,

Второй, однако, является правильным. Если это не работает, то вы должны установить значения hrs, mins, а также secs неправильно в конструкторе Duration,

Проблема, с которой вы столкнулись getHours это то, что вам нужно позвонить. В конце концов, это функция-член. Ну действуй x.getHours() вместо x.getHours,

7

Другие решения

Первый не так. , не работает таким образом.

Второй правильный, если предположить Duration разумно

Вы можете иметь ошибку в вашем Duration конструктор. Я бы даже подумал, что это вероятно.

6

По вопросам рекламы [email protected]