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

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

Войти
Регистрация
Восстановить пароль
 
SandWraith
188 / 188 / 13
Регистрация: 11.04.2009
Сообщений: 497
Завершенные тесты: 2
#1

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

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

Здравствуйте!

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

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

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&)
Возможно ли привести объект к ссылке?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.03.2011, 11:51     Перегрузка оператора <<
Посмотрите здесь:

Перегрузка оператора * - C++
Операция произведения применяется к объекту квадрат, при этом изменяются координаты центры фигуры. Результатом произведения является...

Перегрузка оператора - C++
Всем доброго времени суток!Помогите пожалуйста! Перегрузил оператор умножения матрицы на число, но не могу перегрузить оператор умножения...

Перегрузка оператора = - C++
Есть некий класс. И два класса-наследника. Надо перегрузить оператор =, к тому же в дочерних классах вызывать перегрузку в базовом классе....

Перегрузка оператора << - C++
Есть такой код. class matrix { public: ......; const double* operator(int) const; double* const operator(int); friend...

Перегрузка оператора != - C++
Помогите разобраться с перегрузкой оператора != есть класс, в котором, в разделе private объявлен указатель на массив std::string *str; ...

Перегрузка оператора - C++
Подскажите пожалуйста, способ перегрузки операторов &gt;= и &lt;= в следующей строке if ( ob.str &gt;= '0' &amp;&amp; ob.str &lt;= '9' )Мой вариант не...

Перегрузка оператора -> - C++
Здравствуйте, мне нужно реализовать перегрузку operator-&gt; .Как реализован оператор -&gt;? Что он делает понятно, а как?

Перегрузка оператора + - C++
Доброго времени суток. Есть программа, создающая связный список, который содержит числа по возрастанию #include &lt;iostream&gt; enum...

Перегрузка оператора '=' - C++
Не давно стал изучать С++ и дошёл до перегрузок операторов, и с книги написал пример, и не могу в полной мере его понять, объясните...

Перегрузка оператора - C++
Доброго времени суток! Помогите, пожалуйста, с решением задачи: Описать класс множество целых чисел. Перегрузить следующую операцию: +...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
2918 / 1347 / 134
Регистрация: 29.11.2010
Сообщений: 2,721
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;
}
CyBOSSeR
Эксперт C++
2299 / 1669 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
29.03.2011, 12:56     Перегрузка оператора << #3
SandWraith, не рекомендуется использовать имена переменные начинающиеся со знака подчеркивания. Я что-то никак смысла оператора << в Вашем случае не улавливаю. Он должен просто вывести значения полей двух объектов и вернуть первый?
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 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.
SandWraith
188 / 188 / 13
Регистрация: 11.04.2009
Сообщений: 497
Завершенные тесты: 2
29.03.2011, 13:47  [ТС]     Перегрузка оператора << #5
Цитата Сообщение от Deviaphan Посмотреть сообщение
Подозреваю, что речь идёт о перегрузки operator << для вывода объекта в поток. То, что приведено в коде, не есть перегрузка operator << для вывода в поток. Там - чушь.
Не есть, и не должно быть. Если бы речь шла о потоке, то так и было бы написано.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 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;
};
просто
Yandex
Объявления
29.03.2011, 13:54     Перегрузка оператора <<
Ответ Создать тему
Опции темы

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