Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.60
Lord_Anubys
Сообщений: n/a
#1

Перегрузка оператора сдвига - C++

25.12.2011, 14:13. Просмотров 1966. Ответов 1
Метки нет (Все метки)

Мне нужно перегрузить операторы>>, <<как члены класса, написал так:
C++
1
2
3
4
5
6
istream& Flower::operator>>(Flower& obj)
{
   this >> obj.title;
 
   return *this;
}
Я не знаю как в поток то загрузить, вот например в френд функции мы пишем следующее:
ist>> obj.title;
ist>> obj.color;
ist>> obj.month;
ist>> obj.title;
Ну а оператору как члену класса неявно передается левая часть, вот и стал эксперементировать. Исправьте плиз ошибку
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.12.2011, 14:13     Перегрузка оператора сдвига
Посмотрите здесь:

C++ Перегрузка оператора +
Перегрузка оператора += C++
Перегрузка оператора ‘=’ C++
C++ Перегрузка оператора ->
Перегрузка оператора C++
Перегрузка оператора [] C++
Перегрузка оператора [] C++
Перегрузка оператора C++
Перегрузка оператора C++
Перегрузка оператора + C++
Перегрузка оператора << C++
C++ Перегрузка оператора >>

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
insolent
826 / 347 / 15
Регистрация: 30.01.2009
Сообщений: 1,204
25.12.2011, 19:38     Перегрузка оператора сдвига #2
Вот пример перегрузки как член класса
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
 
class A
{
public:
    A(int n=0) : iVal(n) {}
    void Print()
    {
        std::cout << iVal << std::endl;
    }
 
    A operator >> (int num)
    {
        return A(iVal >> num);
    }
 
    A operator << (int num)
    {
        return A(iVal << num);
    }
 
private:
    int iVal;
};
 
int main()
{
    A obj(8), b;
    b = obj >> 2;
    b.Print();
    b = obj << 1;
    b.Print();
 
    return 0;
}
Если работаешь с потоком, то функции operator<<() и operator>>() должны быть дружественными по отношению к классу, т.к. объекты istream и ostream находятся слева от знака операции
Yandex
Объявления
25.12.2011, 19:38     Перегрузка оператора сдвига
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru