Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
189 / 189 / 38
Регистрация: 11.04.2009
Сообщений: 497
1

Перегрузка оператора <<

29.03.2011, 11:51. Показов 1040. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!

Подскажите, пожалуйста, как выполнить перегрузку оператора <<?

Для двух классов:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class A
{
public:
int i;
A(int _i) { i=_i;};
};
 
class B
{
public:
int i;
B(int _i) { i=_i;};
};
Вот такой вариант работает корректно:

C++
1
2
3
4
5
6
7
8
9
10
11
12
A& operator<<(A& a, const B& b) {
    cout << "Operator '<<': a = " << a.i << " b = " << b.i << endl;
        return a;
};
 
int main()
{
 
A _a(0);
B _b(1);
 
A result = _a << _b;
Но мне необходимо обойтись без определения перменных _a и _b, было бы удобнее сразу вызывать конструктор:

C++
1
A result2 = A(3) << B(4);
objects.cpp: In function `int main()':
objects.cpp:148: no match for `A << B' operator
objects.cpp:135: candidates are: A& operator<<(A&, const B&)
Возможно ли привести объект к ссылке?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.03.2011, 11:51
Ответы с готовыми решениями:

Перегрузка оператора []
всем доброго времени суток! помогите перегрузить оператор есть у меня класс bd, и массив объектов...

Перегрузка оператора []
Возможно ли создать два перегруженных оператора индексации, чтобы один из них возвращал l-value,...

Перегрузка оператора --
Добрый день, у меня возникла небольшая проблема. Дело в том, что display() работает нормально....

Перегрузка оператора <<
Добрый пень! подскажите как написать код для реалилизации следующего требования: SpecialPrint...

5
4773 / 2582 / 894
Регистрация: 29.11.2010
Сообщений: 5,591
29.03.2011, 12:50 2
C++
1
2
3
4
A operator<<(const A& a, const B& b) {
  printf("Operator '<<': a = %d, b = %d\n", a.i, b.i);
  return a;
}
1
Эксперт С++
2347 / 1720 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
29.03.2011, 12:56 3
SandWraith, не рекомендуется использовать имена переменные начинающиеся со знака подчеркивания. Я что-то никак смысла оператора << в Вашем случае не улавливаю. Он должен просто вывести значения полей двух объектов и вернуть первый?
0
Делаю внезапно и красиво
Эксперт С++
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
29.03.2011, 13:07 4
Подозреваю, что речь идёт о перегрузки operator << для вывода объекта в поток. То, что приведено в коде, не есть перегрузка operator << для вывода в поток. Там - чушь.

C++
1
2
3
4
5
std::ostream& operator<<( std::ostream& out, const A& a)
 {
        out << a.i;
        return out;
};
Аналогично для B.
0
189 / 189 / 38
Регистрация: 11.04.2009
Сообщений: 497
29.03.2011, 13:47  [ТС] 5
Цитата Сообщение от Deviaphan Посмотреть сообщение
Подозреваю, что речь идёт о перегрузки operator << для вывода объекта в поток. То, что приведено в коде, не есть перегрузка operator << для вывода в поток. Там - чушь.
Не есть, и не должно быть. Если бы речь шла о потоке, то так и было бы написано.
0
Делаю внезапно и красиво
Эксперт С++
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
29.03.2011, 13:54 6
Извиняюсь, но ЭТО
C++
1
2
3
4
A& operator<<(A& a, const B& b) {
        cout << "Operator '<<': a = " << a.i << " b = " << b.i << endl;
        return a;
};
просто
0
29.03.2011, 13:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.03.2011, 13:54
Помогаю со студенческими работами здесь

Перегрузка оператора +
Здравствуйте. Пытаюсь перегрузить оператор сложения, но выдаёт ошибку. Задача в том, чтобы сложить...

Перегрузка оператора =
Нужно перегрузить оператор так что бы в начале строки и в конце были квадратные скобки . Все почти...

Перегрузка оператора +
Всем добрый вечер. Прошу помочь разобраться. Задание - Для определения даты поставки строительных...

перегрузка оператора +
Не могу понять: в 184 строке отказывается работать. Без нее - все нормально. Скорее всего...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru