возможно ли перегрузить operator%
для двух значений типа double?
const double operator%(const double& lhs, const double& rhs)
{
return fmod(lhs, rhs);
}
Конечно, это приводит к ошибке, поскольку один из двух параметров должен иметь тип класса.Поэтому я подумал об использовании возможности неявных вызовов конструктора C ++, чтобы обойти эту проблему.Я сделал это следующим образом:
class MyDouble {
public:
MyDouble(double val) : val_(val) {}
~MyDouble() {}
double val() const { return val_; }
private:
double val_;
};
const double operator%(const MyDouble& lhs, const double& rhs)
{
return fmod(lhs.val(), rhs);
}
const double operator%(const double& lhs, const MyDouble& rhs)
{
return fmod(lhs, rhs.val());
}
... и:
double a = 15.3;
double b = 6.7;
double res = a % b; // hopefully calling operator%(const MyDouble&, const double) using a implicit constructor call
К сожалению, это не работает!Любые намеки, идеи, ... приветствуются!Заранее спасибо, Джонас