是否有可能超過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