![]() |
|
Модераторы: bsa |
![]()
|
|
| afanp |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 25.11.2008 Репутация: нет Всего: нет |
делаю класс для массива безопасного. такой вопрос : как перегрузить [] ?
если я убираю операцию & то я могу вернуть при неправильном обращении к элементу -1, но при этом не смогу в других функциях задать значение элемента. как же быть ? |
|||
|
||||
| Acer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 652 Регистрация: 5.9.2007 Где: UA::DN Репутация: нет Всего: 8 |
|
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
1. подставлять заглушку, типа
но не советую. 2. вызывать исключение - предпочтительнее. 3. пользовать итератор - "обход" небезопасности [] 4.. использовать std::vector, в котором есть все три способа небезопаное [] безопасное с исключением at() и итераторы 5... Это сообщение отредактировал(а) mes - 19.4.2009, 13:35 |
|||
|
||||
| and277 |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 9.4.2009 Репутация: нет Всего: нет |
Не надо возвращать ретёрном ничего! Используй exit(1);
Это сообщение отредактировал(а) and277 - 19.4.2009, 14:05 |
||||||
|
|||||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
И можно будет дальше спокойно продолжать заполнять массив ?! |
|||
|
||||
| afanp |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 25.11.2008 Репутация: нет Всего: нет |
Acer, не срабатывает этот метод )
mes спасибо большое, помогли Это сообщение отредактировал(а) afanp - 19.4.2009, 15:57 |
|||
|
||||
| and277 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 9.4.2009 Репутация: нет Всего: нет |
Там же границы проверяются на входе... Я не как не смогу записать за границы массива! exit(1) -аварийно завершит программу если условие не выполняется. Поправьте если я не прав. |
|||
|
||||
| Rififi |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: 3 Всего: 36 |
afanp,
сделай две версии []. и не надо никакого -1
|
|||
|
||||
| afanp |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 25.11.2008 Репутация: нет Всего: нет |
Rififi,
а можете объснить как это работает? |
|||
|
||||
| Rififi |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: 3 Всего: 36 |
afanp,
точно также, как и у тебя, только бросается исключение при выходе индекса за границы массива. константная версия op[] нужна чтобы получать значение у константного объекта. |
|||
|
||||
| afanp |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 25.11.2008 Репутация: нет Всего: нет |
Rififi, спасибо
|
|||
|
||||
| sdukshis |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 23.3.2009 Репутация: нет Всего: 1 |
Наверное в качестве первой перегрузки Вы имели в виду следующее:
Для работы с константными объектами. |
||||||
|
|||||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
Acer
Имена начинающиеся с подчеркивания или содержащие двойное подчеркивание зарезервированы для внутреннего использования..их использование нежелательно
а так чем плохо? |
|||
|
||||
| afanp |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 25.11.2008 Репутация: нет Всего: нет |
А Можете объяснить как именно это работает?
всмысле почему нам нельзя просто вернуть -1 или что то еще? |
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
а почему нам нельзя перегрузить например оператор == и с его помощью складывать два операнда. вот смешно то будет. а ещё смешней если перегруженный операнд < будет наоборот работать как >. |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |