У меня есть класс, который выполняет десятичные вычисления. У меня все математические операторы перегружены. Он отлично работает для довольно простых вычислений, но не удается, когда мне нужно добавить parens. Например, оба вычисления в следующей работе и получить правильный результат:Ошибка совпадения для 'operator *'
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.
Я, вероятно, не хватает что-то простое, но не может его найти. Что я делаю не так?
Мы упускаем что-то простое: Код с операторами. –
Я смотрю в свой хрустальный шар, и я вижу: ваш 'operator *' или 'operator /' либо не является 'const', либо ему не хватает аргумента' const'. (обратите внимание: это совершенно дикая догадка, и нам действительно нужны подписи ваших операторов, чтобы иметь возможность делать что-либо помимо диких догадок). – Yakk
Вы убедились, что ваш 'operator /' возвращает ссылку 'const ' результат? – Porkbutts