Явно разрешить приведение типов между основным и пользовательским типом - PullRequest
0 голосов
/ 09 февраля 2019

У меня есть класс дроби, который я хочу иметь возможность приводить к двойному типу.Есть ли способ написать это явно?(Как перегрузка операторов)

Это мой конструктор:

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 голосов
/ 09 февраля 2019

Я бы использовал специализацию шаблона для этой задачи вместо cast_operator.

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

Также вы должны реализовать перегрузку вашего оператора как свободную функцию (с friend), иначе вы не можете передать ей два аргумента.

Пожалуйста, обратитесь к оператор == перегрузка

...