是否可能为两个双精度浮点数重载operator%
运算符?
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
很遗憾,这并不起作用!欢迎任何提示、想法......谢谢! 提前致谢, 乔纳斯
fmod()
,而在不必要的地方搞操作符重载呢?请思考一下。 - Nim