Перегрузка операции “>>” в с++

213
10 декабря 2017, 12:03

Как можно реализовать перегрузку операции >> так, чтоб выражение a>>b>>c (a,b,c - объекты одного класса) работало следующим образом:

В объект c заносится значение объекта b, а в объект b - значение объекта a.

Answer 1

Операция при перегрузке должна возвращать старое значение правого операнда. Тогда результатом

a >> b

будет занесение в b значения a, а результат - старое значение b - будет занесено в c.

Что-то вроде

#include <iostream>
using namespace std;
class I
{
    int i;
public:
    I(int i = 0):i(i){}
    operator int() const { return i; }
};
I operator >> (const I& a, I& b)
{
    I c = b;
    b = a;
    return c;
}
int main(int argc, const char * argv[])
{
    I a(3), b(4), c(5);
    a >> b >> c;
    cout << a << "  " << b << "  " << c << endl;
}
READ ALSO
Сдвиг части текста С++

Сдвиг части текста С++

Как можно сдвинуть часть текста? Например, из слова "привет" сделать "при вет"Без memmove

219
Почему minGW компилятор не открывает Handle файл?

Почему minGW компилятор не открывает Handle файл?

создаю Handle hfileИспользую FindFirstFile,и проверяю с hFile!=INVALID_HANDLE_VALUE

201
Как добавить свой виджет на главное окно Qt

Как добавить свой виджет на главное окно Qt

Создал свой виджет для визуализации круговой диаграммы:

256