参数不是 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。