Jon*_*nas 4 c++ double overloading operator-keyword
是否有可能超过operator%
两个双打?
const double operator%(const double& lhs, const double& rhs)
{
return fmod(lhs, rhs);
}
Run Code Online (Sandbox Code Playgroud)
当然,这会产生错误,因为两个参数中的一个必须具有类类型.所以我考虑利用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());
}
Run Code Online (Sandbox Code Playgroud)
......和:
double a = 15.3;
double b = 6.7;
double res = a % b; // hopefully calling operator%(const MyDouble&, const double) using a implicit constructor call
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不起作用!任何提示,想法,...表示赞赏!在此先感谢,乔纳斯
这不起作用的原因是因为只有当表达式的至少一个操作数具有类或枚举类型时,才会触发用户定义的操作符函数的重载解析.
所以你运气不好.这不行.
我认为你可以尝试的最好的是等待C++ 0x编译器,而不是写3.14
,你写3.14_myd
,作为用户定义的文字.