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

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

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

Постфиксная и префиксная форма инкремента и декремента. C++
C++ Использование инкремента(Декремента)
Перегрузка оператора декремента C++
Перегрузка friend оператора в матрицах C++
C++ Перегрузка оператора декремента
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
pincet
 Аватар для pincet
1096 / 757 / 79
Регистрация: 23.07.2010
Сообщений: 3,803
24.10.2011, 22:28     Перегрузка оператора инкремента/декремента через friend #2
Дык, в прототипе ты декларируешь int, а в реализации - банан.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
24.10.2011, 22:29     Перегрузка оператора инкремента/декремента через friend #3
Раз вы перегружаете оператор глобально, у него должен быть один параметр (общая формула - параметров у глобального оператора должно быть на один больше, чем у локального).
cetrael
 Аватар для cetrael
60 / 5 / 3
Регистрация: 01.10.2011
Сообщений: 93
24.10.2011, 22:34  [ТС]     Перегрузка оператора инкремента/декремента через friend #4
Цитата Сообщение от pincet Посмотреть сообщение
Дык, в прототипе ты декларируешь int, а в реализации - банан.
Не суть, просто забыл инт убрать.

silent_1991, спасибо, все сделал. Но возникла другая проблемка, я передаю теперь туда объект - двумерный массив. По логике в функции создается копия объекта, совершается декремент, копия удаляется и ничего не возвращается. Как поступить?
pincet
 Аватар для pincet
1096 / 757 / 79
Регистрация: 23.07.2010
Сообщений: 3,803
24.10.2011, 22:36     Перегрузка оператора инкремента/декремента через friend #5
Офигенная не суть. Давайте будем код один подсовывать, а иметь в виду совсем другой.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
24.10.2011, 22:41     Перегрузка оператора инкремента/декремента через friend #6
Цитата Сообщение от cetrael Посмотреть сообщение
Как поступить?
Как поступить с чем? Вопроса я не вижу, вижу лишь констатацию факта.
cetrael
 Аватар для cetrael
60 / 5 / 3
Регистрация: 01.10.2011
Сообщений: 93
24.10.2011, 22:48  [ТС]     Перегрузка оператора инкремента/декремента через friend #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. буду прежде думать, чем постить сюда
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2011, 22:51     Перегрузка оператора инкремента/декремента через friend
Еще ссылки по теме:

перегрузка через friend, ошибка:( C++
C++ Перегрузка префиксного оператора инкремента с возвращающим значением
Ассоциативность инкремента декремента C++

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

Или воспользуйтесь поиском по форуму:
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
24.10.2011, 22:51     Перегрузка оператора инкремента/декремента через friend #8
cetrael, передавайте массив по ссылке, разумеется.
Yandex
Объявления
24.10.2011, 22:51     Перегрузка оператора инкремента/декремента через friend
Ответ Создать тему
Опции темы

Текущее время: 23:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru