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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.84
cetrael
60 / 5 / 3
Регистрация: 01.10.2011
Сообщений: 93
#1

Перегрузка оператора инкремента/декремента через friend - C++

24.10.2011, 22:25. Просмотров 2422. Ответов 7
Метки нет (Все метки)

Нужно реализовать перегрузку унарного оператора через friend.
Что я пытаюсь сделать:
C++
1
friend void operator -- ();//prototype
C++
1
2
3
4
void operator --() {
    cout << "Overloaded operator --"<< endl;
    //bla-bla-bla
}
Не суть, что в коде, потому что парсер даже до него не доходит, пишет, что слишком мало параметров для функции оператор.
Why?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2011, 22:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перегрузка оператора инкремента/декремента через friend (C++):

Перегрузка оператора декремента - C++
Собственно, нужно написать программу для уменьшения значения переменной на 10, путем перегрузки оператора декремента(&quot;--&quot;). Не знаю даже...

Перегрузка оператора декремента - C++
Приветствую Вас форумчане:dance3: Столкнулся с такой проблемой при перегрузке операции декремента для своего класса, вот код: ...

Перегрузка friend оператора в матрицах - C++
#include &lt;time.h&gt; #include &lt;iostream&gt; using namespace std; short int ddd=1; class Matrix { private: int mn,mm,**mass1; ...

Перегрузка префиксного оператора инкремента с возвращающим значением - C++
Наткнулся на интересный код. В ссылках и указателях я разбираюсь хорошо, но я вошел в ступор при рассмотрении нижеописанного примера. ...

Использование инкремента(Декремента) - C++
Есть три кнопки и три индикатора(лампочки). Если нажимаю кнопку-1 тогда включается лампочка нажимаю еще раз выключается. Если по одному...

Операторы инкремента и декремента - C++
Создайте в классе Circle префиксный и постфиксный операторы инкремента и декремента, воздействующие только на член-данное радиус itsRadius.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
pincet
1242 / 811 / 86
Регистрация: 23.07.2010
Сообщений: 4,149
24.10.2011, 22:28 #2
Дык, в прототипе ты декларируешь int, а в реализации - банан.
0
silent_1991
Эксперт С++
4964 / 3040 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
24.10.2011, 22:29 #3
Раз вы перегружаете оператор глобально, у него должен быть один параметр (общая формула - параметров у глобального оператора должно быть на один больше, чем у локального).
1
cetrael
60 / 5 / 3
Регистрация: 01.10.2011
Сообщений: 93
24.10.2011, 22:34  [ТС] #4
Цитата Сообщение от pincet Посмотреть сообщение
Дык, в прототипе ты декларируешь int, а в реализации - банан.
Не суть, просто забыл инт убрать.

silent_1991, спасибо, все сделал. Но возникла другая проблемка, я передаю теперь туда объект - двумерный массив. По логике в функции создается копия объекта, совершается декремент, копия удаляется и ничего не возвращается. Как поступить?
0
pincet
1242 / 811 / 86
Регистрация: 23.07.2010
Сообщений: 4,149
24.10.2011, 22:36 #5
Офигенная не суть. Давайте будем код один подсовывать, а иметь в виду совсем другой.
0
silent_1991
Эксперт С++
4964 / 3040 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
24.10.2011, 22:41 #6
Цитата Сообщение от cetrael Посмотреть сообщение
Как поступить?
Как поступить с чем? Вопроса я не вижу, вижу лишь констатацию факта.
0
cetrael
60 / 5 / 3
Регистрация: 01.10.2011
Сообщений: 93
24.10.2011, 22:48  [ТС] #7
Цитата Сообщение от silent_1991 Посмотреть сообщение
Как поступить с чем? Вопроса я не вижу, вижу лишь констатацию факта.
Извиняй, битый час за кодом уже сижу, туплю.

C++
1
2
3
4
5
6
7
intArray operator --(intArray a) {
        cout << "Overloaded operator --"<< endl;
        a.arr[1]++;
        return a;
 
 
}
Данный код не делает никаких изменений с массивом, ибо работает с копией, а нужно добиться инкремента и вывести результат.
Класс intArray допустим содержит одномерный массив int чисел.

Ай, все, передал через ссылку, все сделал, извиняйте за беспокойство.
P.S. буду прежде думать, чем постить сюда
0
silent_1991
Эксперт С++
4964 / 3040 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
24.10.2011, 22:51 #8
cetrael, передавайте массив по ссылке, разумеется.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2011, 22:51
Привет! Вот еще темы с ответами:

Ассоциативность инкремента декремента - C++
Всем привет. Вот такую табличку недавно нашел - http://ru.cppreference.com/w/cpp/language/operator_precedence Почему префиксный...

перегрузка через friend, ошибка:( - C++
Почему-то пишет что нету доступа к приватным параметрам, но функция же friend... Пробовал уже по всяякому, никак не прокатывает ...

Постфиксная и префиксная форма инкремента и декремента. - C++
Само задание: Написать программу с примерами постфиксной и префиксной формами инкремента и декремента. Число вводится с клавиатуры. ...

Вывод в поток и операция инкремента / декремента - C++
При использовании следующего оператора вывода в поток: int n = 10; cout &lt;&lt; n++ &lt;&lt; ' ' &lt;&lt; n &lt;&lt; ' ' &lt;&lt; --n &lt;&lt; endl; получил такой...


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

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

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