Итак, я новичок в c ++ и пытаюсь создать класс дроби C ++ с перегрузкой операций.Все было хорошо, пока я не получил ошибку в строке сравнения меньше основной функции:
Fraction someNum(15, 9);
......
if (someNum > 1)
cout << "15/9 > 1." << endl;
if (1 < someNum) //throws error
cout << "1 < someNum." << endl;
Ошибка:
operator<(const error_condition& __lhs,
^~~~~~~~
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\system_error:274:3: note: no known conversion for argument 1 from 'int' to 'const std::error_condition&'
Странно то, что сравнение больше, чем сравнениепечатает вывод правильно и не выдает ошибку, несмотря на то, что они оба являются смешанными сравнениями.
Вот соответствующий код в моем другом файле .cpp:
//lesser than
bool Fraction::operator<(Fraction right) {
return (num * (denom * right.denominator())) < (right.numerator() * (denom * right.denominator()));}
//greater than
bool Fraction::operator>(Fraction right) {
return (num * (denom * right.denominator())) > (right.numerator() * (denom * right.denominator()));}
Как вы можете видеть,строки кода точно такие же, за исключением оператора сравнения.Однако один выдает ошибку, а другой - нет.Как только вы уберете последний результат сравнения, все будет работать правильно.Я вообще не понимаю, как это исправить ...
Любые указатели будут с благодарностью.Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.
Спасибо!