![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » [решено] Основы C++ | Использование operator[int, ...] |
|
[решено] Основы C++ | Использование operator[int, ...]
|
Старый параноик Сообщения: 2423 |
Тут забавный такой момент был...
Класс (пусть будет class A) использовал для доступа к массиву своих данных int& A::operator(int, ...). Всё работало, но у класса были ещё несколько конструкторов вида A::A(int i, int j), A::A(int i, int j, int k), плюс это был шаблон класса... В общем, решили "сумничать", повысить читаемость кода. Ну и заменили "()" на "[]" :-) Потом, конечно, пришлось всё возвращать обратно, так как оператор индексирования работает только с одним параметром. Но вот что интересно... Когда мы писали так: , компилятор (gcc v3.3.3) ругался ошибкой. А когда написали так: , стал ругатся лишь предупреждением! Вопрос такой теперь мучает. А насколько вообще корректно писать operator[](int, ...), если известно (точно), что все "передаваемые" при вызове аргументы попросту игнорируются компилятором. Может, это всё-таки _ошибка_ должна быть? И второй вопрос :] А куда деваются параметры при вызове { A a(0,0); a[1, 2, 3, 4]; }, например? Никто не видел сгенерированный assm-текст для подобного? Или "1,2,3,4" интерпретируются как последовательность операторов через запятую? |
|
Отправлено: 14:32, 28-09-2006 |
редкий гость Сообщения: 1696
|
Профиль | Сайт | Отправить PM | Цитировать Цитата:
![]() Подумалось, а если попробовать. Вызвать a.operator[](0,0)? Сам только что проверил. Результаты: g++ 3.3.6 - позволяет объявить operator[](int, ...) и вызывать его явным образом с любым числом парамтеров. Ни на что не ругается, ни о чём не предупреждает с -Wall. g++ 4.1.1 - ругается на объявление operator[](int, ...). Так что, скорее всего, так делать нельзя совсем. |
|
------- Отправлено: 15:07, 28-09-2006 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старый параноик Сообщения: 2423
|
Профиль | Отправить PM | Цитировать >> возвращать ещё один объект, с перегруженным operator[]
Не, у _нас_ так не получится. Да Б@г с ним. >> g++ 4.1.1 - ругается на объявление operator[](int, ...). Вот оно! Спасибо :-) |
Отправлено: 15:20, 28-09-2006 | #3 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
C/C++ - [решено] Как сгенерировать случайное число на всем диапазоне значений int? | Michael | Программирование и базы данных | 14 | 04-02-2011 17:08 | |
C/C++ - [решено] int в AnsiString | crashtuak | Программирование и базы данных | 7 | 30-03-2009 02:11 | |
Разное - [решено] PHP - основы | delog | Программирование и базы данных | 1 | 09-03-2009 17:04 | |
[решено] Aver TV studio TV/FM, PCI, INT проблема с записью, и непонятно какая это модель | rizz | Непонятные проблемы с Железом | 20 | 15-11-2006 08:44 | |
Основы C++ | Перегрузка operator+ для m_string | Skrip | Программирование и базы данных | 1 | 10-08-2005 13:41 |
|