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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> разделение алгоритмов чтения/записи, написание различных операторов 
:(
    Опции темы
Jcs
Дата 21.12.2003, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Можно ли написать отдельные операторы для чтения и записи к примеру из списка. Вернее я знаю, что можно, тока вот как? пробовал с идентификатором const, но компилятор не различает эти два оператора
template<typename T>
class CList
{
public:
T& operator[](unsigned int index) const{...}
T& operator[](unsigned int index){...}
};
Заранее спасибо.
PM   Вверх
mr.DUDA
Дата 21.12.2003, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



Можно попробовать через промежуточный тип:
Цитата
template <typename T>
class CList
{
  public:

      class CValAccessor
      {
          private:
                 T  &m_Ref; // ссылка на элемент списка CList
                 CValAccessor() {}   // запретим доступ к конструктору без параметров
          public:
                 // конструктор инициализирует ссылку m_Ref:
                 CValAccessor(T& value): m_Ref(value) {}

                 // переопределяемые операции для чтения и записи значения:
                 void operator= (T& value);      //  например:   {m_Ref = value;}
                 operator T();                          //   например:   {return  m_Ref;}
      };


      CValueAccessor& operator[](unsigned int index);
      // например:    return CValueAccessor(m_array[index]);
};     


Это сообщение отредактировал(а) mr.DUDA - 21.12.2003, 20:06


--------------------
user posted image
PM MAIL WWW   Вверх
Jcs
Дата 21.12.2003, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Да это действительно работает, только я пробовал не через вложенные классы, а через дружественные, как у Страуструпа. Но мне кажется, этот вариант слишком сложен, и при наследовании будет работать не так как этого бы хотелось (с дружественными классами), с вложенными классами работать вроде должно. В MFC, например, есть два раздельных оператора, для чтения - с идентификатором const, для чтения - без оного. Может быть эта опция поддерживается в новых компиляторах, в интеловском, например (у меня MS). Спасибо за ответ, если ничего не получится, придется использовать именно этот вариант.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
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.0685 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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