Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> определение операторов, идентификатор const 
:(
    Опции темы
Jcs
Дата 8.10.2003, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 156
Регистрация: 1.10.2003

Репутация: нет
Всего: нет



Если кто-нибудь определял опрератор [] отдельно для записи и для чтения, не сталкивались ли с проблемой, что вызывается всегда оператор без const?
Код

template<typename T> class CList<T>
{
public:
   const T& operator[] (int index) const;
   T& operator[](int index);
};

some_func()
{
 CList list<int>;
 int a = list[1];
 list[1] = 10;
}


у почему-то меня оба раза вызывается второй оператор.

PM   Вверх
Nastya
Дата 8.10.2003, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 27.3.2002
Где: Мариуполь

Репутация: 5
Всего: 44



Если я правильно понимаю, то первый оператор будет вызываться в том случае, если объект будет объявлен константным.
А что обо оператора должны выполнять разные действия ?


--------------------
Что бы понять рекурсию, надо понять рекурсию

"Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор
PM MAIL   Вверх
Jcs
Дата 8.10.2003, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 156
Регистрация: 1.10.2003

Репутация: нет
Всего: нет



Да, в том то и дело... При записи членов списка должен выполняться ряд действий, который при чтении не выполняется; к примеру, если записываемый элемент равен какому-то заданному, то увеличивается счетчик этих заданных элементов и адрес его пишется в какую-либо таблицу. То есть возможна ситуация, когда необходим контроль записываемых элементов. Спасибо за отклик.
PM   Вверх
Jcs
Дата 8.10.2003, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 156
Регистрация: 1.10.2003

Репутация: нет
Всего: нет



В этом случае константным список объявить не получится, т.к. запись все равно делать надо
PM   Вверх
Jcs
Дата 9.10.2003, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 156
Регистрация: 1.10.2003

Репутация: нет
Всего: нет



Если кому интересно, то для контроля записываемых элементов нужно определять опрераторы равенства и приведения типов, для чтения вызывается последний
PM   Вверх
Fantasist
Дата 10.10.2003, 05:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй
***


Профиль
Группа: Участник Клуба
Сообщений: 1517
Регистрация: 24.3.2002

Репутация: 4
Всего: 41



Семантика правильная. Что за компилятор? Поробуй другой.


--------------------
Волны гасят ветер...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1278 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.