是否有可能超过operator%
两个双打?C++过载运算符%两个双打
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
不幸的是,这也不行!任何提示,想法......都会感激! 在此先感谢, Jonas
嗯......为什么不直接调用'FMOD()'直接和没本事周围操作符重载,它没有必要? – Nim 2011-04-28 11:47:54