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

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

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

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

25.12.2011, 14:13. Просмотров 2023. Ответов 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++
Подскажите пожалуйста как перегрузить оператор % для матрицы! #include &quot;StdAfx.h&quot; #include &quot;statik.h&quot; #include &lt;iostream&gt; ...

Перегрузка оператора == - C++
Есть шаблонный класс List (не имеющий перегруженных операторов) и есть шаблонный класс ListWithName, который наследует List и из своих...

Перегрузка оператора == - C++
нужно сравнить 1) объект класса abc с объектом класса abc1 2) объект класса abc с другим объектом класса abc 3) объект класса abc1...

Перегрузка оператора () - C++
Никак не могу разобраться с перерузкой оператора () и в литературе не могу найти доходчивое объяснение: Есть перегрузка оператора () Есть...

Перегрузка оператора *= - C++
Переписываю свой матричный калькулятор и решил внести в него перегрузку оператора *= Matrix* Matrix::operator *=(double num){ ...

Перегрузка оператора [] - C++
Здравствуйте. Пробую перегрузить оператор . template &lt;class Element&gt; class List { public: struct Node { Element el; ...

перегрузка оператора [] - C++
объясните в 3х словах для ламера в чем смысл перегрузки, конкретно оператора

Перегрузка оператора * - C++
Здрасте. Есть задача: Реализовать класс Matrix размерностью NxN, в которой хранятся числа типа float. Память под элементы выделять...

Перегрузка оператора = - C++
Здравствуйте, возникла проблема при перегрузке оператора. const digit &amp;operator=( const int &amp; ); const digit &amp;operator=( const char...

Перегрузка оператора [] - C++
Что не правильно я перегрузил? #include &lt;iostream&gt; #include &lt;locale.h&gt; using namespace std; struct S_List { char c; S_List...

Перегрузка оператора - C++
Доброго времени суток. Столкнулся с проблемой перегрузки оператора &quot;++&quot; выдает ошибку в первой строке: postfix ‘const Counter...

Перегрузка оператора - 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 находятся слева от знака операции
Ответ Создать тему
Опции темы

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