我有一门进行十进制计算的课程。我有所有的数学运算符重载。它适用于相当简单的计算,但当我需要添加括号时会失败。例如,以下两种计算都可以工作并得到正确的结果:
myClass r, a = 100000, b = 2.5, c = 10, d = 30;
r = c / d * a * b;
r = (c / d) * a * b;
但是如果我将计算更改为r = a * b * (c / d);
编译失败:
error: no match for ‘operator*’ in ‘myClass::operator*(myClass&)((* & b)) * myClass::operator/(myClass&)((* & d))’ in gcc 4.6.2.
我可能错过了一些简单的东西,但找不到。我究竟做错了什么?