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

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

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

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

29.03.2011, 11:51. Просмотров 785. Ответов 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++
Осуществляю перегрузку оператора +. и вот почему-то член класса s меняет свою длину с 4 до 7 и мне вот это не понятно.. Подскажите,...

Перегрузка оператора = - C++
Ввести строку символов S1. Программа должна содержать перегруженную операцию “=”, использование которой скопирует S1 в S2 при следующих...

Перегрузка оператора [] - C++
Создал класс в котором массив указателей на другой класс, перегрузил оператор взятия индекса следующим образом: h-файл #ifndef...

Перегрузка оператора - - C++
В своём классе я перегрузил оператор -,но в функции,использующей вычитание возникает ошибка error C2678: бинарный &quot;-&quot;: не найден...

Перегрузка оператора += - C++
реализую класс собственных строк называеться MyString вылетает при использовании оператора += самое интересное что если дебажишь код по...

Перегрузка оператора () - C++
кто может подсказать как создать перегрузку что бы можно было работать с амссивввом в таком ввиде mass(3)=2 а не mass=2; если можно...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
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++
2300 / 1670 / 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;
};
просто
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.03.2011, 13:54
Привет! Вот еще темы с ответами:

Перегрузка оператора + - C++
Не могу заставить работать перегруженный оператор + в функции CMoveByVector Point.h: #define POINT_H #include &lt;iostream&gt; ...

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

Перегрузка оператора << - C++
Здравствуйте форумчане, помогите исправить ошибку. Вообщем есть класс с перегруженным оператором &lt;&lt; . Category.h class...

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
29.03.2011, 13:54
Ответ Создать тему
Опции темы

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