C++;分数混合比较运算符错误 我是C++新手,尝试创建一个操作过载的C++分数类。在主函数的小于比较行出现错误之前,一切正常: Fraction someNum(15, 9); ...... if (someNum > 1) cout << "15/9 > 1." << endl; if (1 < someNum) //throws error cout << "1 < someNum." << endl; 分数someNum(15,9); ...... 如果(someNum>1) cout
您需要一个C++;分数混合比较运算符错误 我是C++新手,尝试创建一个操作过载的C++分数类。在主函数的小于比较行出现错误之前,一切正常: Fraction someNum(15, 9); ...... if (someNum > 1) cout << "15/9 > 1." << endl; if (1 < someNum) //throws error cout << "1 < someNum." << endl; 分数someNum(15,9); ...... 如果(someNum>1) cout,c++,type-conversion,boolean,comparison,C++,Type Conversion,Boolean,Comparison,您需要一个运算符比较具有相反顺序的参数,因此它将匹配一个类似于op的op重载。您将需要一个运算符比较具有相反顺序的参数,因此它将匹配类似于op的重载 operator<(const error_condition& __lhs, ^~~~~~~~ c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\system_error:274:3: note: no known conversion for argu
运算符
比较具有相反顺序的参数,因此它将匹配一个类似于op的op
重载。您将需要一个运算符
比较具有相反顺序的参数,因此它将匹配类似于op的重载
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&'
//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()));}
struct Foo {};
bool operator>(Foo, int);
struct Bar {};
bool operator>(Bar, int);
bool operator>(int, Bar); // This one has the parameters in both orders
int main() {
Foo f;
f > 1;
1 > f; // doesn't work
Bar b;
b > 1;
1 > b; // works
}
struct Bar {
friend bool operator>(Bar, int);
friend bool operator>(int, Bar);
};