参数不是 class 或枚举的重载运算符
Overloading operator whose parameter is not class or enum
我想像这样重载运算符:
fraction operator / (int a, int b) // error here
{
return fraction(a,b);
}
(不在分数 class 内)。
但是编译器说:
[Error] 'fraction operator/(int, int)' must have an argument of class or enumerated type.
我可以解决这个问题吗? (只是想当我写成 1/3 时转换成 fraction(1,3)
而不是 fraction(1/3)
(1/3 等于浮点数中的 0.3333333 所以当转换回分数时,我会得到 16666667/50000000,而不是 1/ 3)
I want to overload operator like this:
fraction operator / (int a, int b) // error here
您可能不会像编译器所说的那样执行您想要的操作。
Can I get around this?
想要别的东西。在 C++ 中无法更改两个 int
的除法。
你可以只写fraction(1, 3)
。如果你想写一些更短的东西,那么你可以使用用户定义的文字:1_frac / 3
.
not fraction(1/3) (1/3 which equal 0.3333333 in float so when converting back into fraction
1/3 不是浮点数。它等于 0。
我想像这样重载运算符:
fraction operator / (int a, int b) // error here
{
return fraction(a,b);
}
(不在分数 class 内)。 但是编译器说:
[Error] 'fraction operator/(int, int)' must have an argument of class or enumerated type.
我可以解决这个问题吗? (只是想当我写成 1/3 时转换成 fraction(1,3)
而不是 fraction(1/3)
(1/3 等于浮点数中的 0.3333333 所以当转换回分数时,我会得到 16666667/50000000,而不是 1/ 3)
I want to overload operator like this:
fraction operator / (int a, int b) // error here
您可能不会像编译器所说的那样执行您想要的操作。
Can I get around this?
想要别的东西。在 C++ 中无法更改两个 int
的除法。
你可以只写fraction(1, 3)
。如果你想写一些更短的东西,那么你可以使用用户定义的文字:1_frac / 3
.
not fraction(1/3) (1/3 which equal 0.3333333 in float so when converting back into fraction
1/3 不是浮点数。它等于 0。