![]() |
|
Модераторы: Poseidon |
![]()
|
|
| zhenya1 |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 20.9.2010 Репутация: нет Всего: нет |
Проблема с перегрузкой оператора --.
(В одной книге по одному реализовано, а в другой - по другому (т.е. как я понял ,если написать ----fff то должна быть ошибка)
весь код:
|
||||
|
|||||
| Crafty |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 319 Регистрация: 3.11.2008 Репутация: нет Всего: 14 |
Тут все правильно, нету никакой ошибки. operator-- возвращает ссылку, а ссылка является l-value, следовательно нету никакой ошибки. А вот если объявлен постфиксный оператор, то ошибка будет, например так неправильно:
Это сообщение отредактировал(а) Crafty - 7.10.2010, 23:30 |
||||
|
|||||
| zhenya1 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 20.9.2010 Репутация: нет Всего: нет |
Как это понять? Как тогда записывается перегрузка для постфиксной формы? |
|||
|
||||
| Crafty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 319 Регистрация: 3.11.2008 Репутация: нет Всего: 14 |
zhenya1, l-value = left-value, то есть может находиться с левой стороны оператора присвоения.
Добавлено через 1 минуту и 43 секунды PS я вам советую почитать учебник по С++, почти все простые вопросы сразу отпадут. |
|||
|
||||
| zhenya1 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 20.9.2010 Репутация: нет Всего: нет |
Смотрите, почитал С. Майерса. Там вот так написано:
|
|||
|
||||
| Crafty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 319 Регистрация: 3.11.2008 Репутация: нет Всего: 14 |
Нужно перегрузить оператор += прежде чем использовать его для объекта. Это сообщение отредактировал(а) Crafty - 9.10.2010, 21:29 |
|||
|
||||
| zhenya1 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 20.9.2010 Репутация: нет Всего: нет |
Можно ли написать вот так, вместо += ( а то нигде не описывается перегрузка +=):
CClient&CClient::operator ++() { //*this+=1; m_nAccountCount++; return *this; } |
|||
|
||||
| Crafty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 319 Регистрация: 3.11.2008 Репутация: нет Всего: 14 |
zhenya1, можно.
|
|||
|
||||
| zhenya1 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 20.9.2010 Репутация: нет Всего: нет |
И последнне, что не получается (перегрузка <<):
Это сообщение отредактировал(а) zhenya1 - 10.10.2010, 19:02 |
|||
|
||||
| Crafty |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 319 Регистрация: 3.11.2008 Репутация: нет Всего: 14 |
zhenya1, строку
Это сообщение отредактировал(а) Crafty - 10.10.2010, 19:10 |
||||
|
|||||
| zhenya1 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 20.9.2010 Репутация: нет Всего: нет |
И , даже, вот так может сделать:
|
|||
|
||||
| Crafty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 319 Регистрация: 3.11.2008 Репутация: нет Всего: 14 |
Советую использовать класс string из stl вместо всяких указателей на char и работы с динамической памятью, ошибок будет значительно меньше. |
|||
|
||||
| zhenya1 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 20.9.2010 Репутация: нет Всего: нет |
У меня так изначально было :( и тоже ошибка была.( вылазит там что-то типа strlen )
Я пока не знаком с такими вещами (точнее мне еще нельзя это применять) |
|||
|
||||
| Crafty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 319 Регистрация: 3.11.2008 Репутация: нет Всего: 14 |
zhenya1, выложите вашу последнюю версию кода.
Добавлено @ 00:10
Точно также было? Я у вас в первом посте не заметил список инициализации в конструкторах CClient. Это сообщение отредактировал(а) Crafty - 11.10.2010, 00:11 |
|||
|
||||
| zhenya1 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 20.9.2010 Репутация: нет Всего: нет |
Вот вся последняя версия.
|
|||
|
||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |