Не перегружается оператор “>>”

185
28 апреля 2018, 18:08

не получается перегрузить оператор ввода.
Выскакивает ошибка:

бинарный ">>": не найден оператор, принимающий левый операнд типа "std::istream" (или приемлемое преобразование отсутствует)

В чем может быть проблема?

class Rational {
public:
    Rational() {
        numerator = 0;
        denominator = 1;
    }
    Rational(int num, int denom) {
        int a = abs(num);
        int b = abs(denom);
        int nod;
        while (a != 0 && b != 0){
            if (a > b)
                a = a % b;
            else
                b = b % a;
        }
        nod = a + b;
        if ((denom < 0 && num>0) || (denom < 0 && num < 0)) {
            num = -num;
            denom = -denom;
        }
        numerator = num / nod;
        denominator = denom / nod;
    }
    int Numerator() const {                 
        return numerator;
    }
    int Denominator() const {               
        return denominator;
    }
private:
    int numerator, denominator;
};
Answer 1

Определите оператор как друг класса:

class Rational {
public:
    Rational() : numerator(0), denominator(1) {}
    //...
    friend istream& operator >>(istream& stream, Rational& r)
    {
        char c;
        stream >> numerator >> c >> denominator;
        return stream;
    }
private:
    int numerator, denominator;
};

Вы же так хотели кажется?..

READ ALSO
Отменяет ли регистрацию класса окна PostQuitMessage

Отменяет ли регистрацию класса окна PostQuitMessage

Когда мое приложение стартует, RegisterClassEx иногда возвращает 0, и приложение приходится аварийно завершатьЭто происходит не по тому ли что иногда...

148
Как динамически с помощью переменных и регулярного выражения поменять последнее значение в строке?

Как динамически с помощью переменных и регулярного выражения поменять последнее значение в строке?

Нужно динамически с помощью переменных и регулярного выражения поменять последнее значение в строкеВ первом случае работает во втором нет

195
Как отображать и изменять файлы на сайте

Как отображать и изменять файлы на сайте

Нужно чтобы в saidbar'е отображать файлы HTML,CSS,JS,PHP, а в контенте содержимое этого файлаКак это сделать?

152