我有一个Fraction类,我希望能够将其转换为double类型。 有没有办法明确地写出来? (像运算符重载一样)
这是我的构造函数:
Fraction::Fraction(double n, double d) : numerator(n), denominator(d)
{
if (d == 0) throw Error::DIVIDE_BY_ZERO;
}
重载运算符时,例如:
bool operator==(const Fraction& left, const Fraction& right)
我希望重载也能够采用double
而不必用(const Fraction&, const double)
和(const double, const Fraction&)
编写重载
答案 0 :(得分:0)
对于此任务,我将使用模板专用化,而不是cast_operator。
template<typename T>
friend bool operator==(const T& left, const T& right) // member template
此外,您还应该将操作符重载实现为自由函数(使用friend
),否则无法向其传递两个参数。