明确允许在主要类型和用户定义类型之间进行类型转换

时间:2019-02-09 13:36:37

标签: c++ type-conversion operator-overloading

我有一个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&)编写重载

1 个答案:

答案 0 :(得分:0)

对于此任务,我将使用模板专用化,而不是cast_operator。

template<typename T>
friend bool operator==(const T& left, const T& right) // member template

此外,您还应该将操作符重载实现为自由函数(使用friend),否则无法向其传递两个参数。

请参阅operator == overloading