cpp
От: cpp-c0der  
Дата: 13.04.04 13:47
Оценка:
Здравствуйте.
Есть класс-шаблон Matrix<Type> — двумерный массив(атрибуты класса: Type* t, int rows, int cols). Как можно переопределить оператор [][] для данного класса?
Re: cpp
От: franc  
Дата: 13.04.04 13:50
Оценка: 1 (1)
Здравствуйте, cpp-c0der, Вы писали:

CC>Здравствуйте.

CC>Есть класс-шаблон Matrix<Type> — двумерный массив(атрибуты класса: Type* t, int rows, int cols). Как можно переопределить оператор [][] для данного класса?

никак. надо чтобы оператор [] был (пере)определен у класса T
Re: cpp
От: Vamp Россия  
Дата: 13.04.04 13:50
Оценка:
CC>...Как можно переопределить оператор [][] для данного класса?
Такого оператора нет. Следует определить оператор [], возвращающий прокси-объект представляющий строку, к которому в свою очередь применим оператор [].
Да здравствует мыло душистое и веревка пушистая.
Re: cpp
От: jazzer Россия Skype: enerjazzer
Дата: 13.04.04 13:52
Оценка:
Здравствуйте, cpp-c0der, Вы писали:

CC>Здравствуйте.

CC>Есть класс-шаблон Matrix<Type> — двумерный массив(атрибуты класса: Type* t, int rows, int cols). Как можно переопределить оператор [][] для данного класса?

заводишь левый класс с оператором [], возвращающим то, что тебе надо, в матрице заводишь operator[], возвращающий объекта этого левого класса, и второй вызов [] придет уже к нему
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re: cpp
От: sergey_shandar США http://getboost.codeplex.com/
Дата: 13.04.04 14:00
Оценка:
Здравствуйте, cpp-c0der, Вы писали:

CC>Здравствуйте.

CC>Есть класс-шаблон Matrix<Type> — двумерный массив(атрибуты класса: Type* t, int rows, int cols). Как можно переопределить оператор [][] для данного класса?
http://www.rsdn.ru/Forum/Message.aspx?mid=61559
Автор: GromRom
Дата: 07.06.02
getboost.codeplex.com
citylizard.codeplex.com
Re[2]: cpp
От: Bell Россия  
Дата: 13.04.04 14:03
Оценка:
Здравствуйте, sergey_shandar, Вы писали:

_>Здравствуйте, cpp-c0der, Вы писали:


CC>>Здравствуйте.

CC>>Есть класс-шаблон Matrix<Type> — двумерный массив(атрибуты класса: Type* t, int rows, int cols). Как можно переопределить оператор [][] для данного класса?
_>http://www.rsdn.ru/Forum/Message.aspx?mid=61559
Автор: GromRom
Дата: 07.06.02


Посморти здесь
Автор: Кодт
Дата: 23.09.02

Там же есть ссылка на статью, описывающую реализацию с помощью прокси-объектов.
Любите книгу — источник знаний (с) М.Горький
Re: cpp
От: c-smile Канада http://terrainformatica.com
Дата: 13.04.04 15:26
Оценка:
Здравствуйте, cpp-c0der, Вы писали:

CC>Здравствуйте.

CC>Есть класс-шаблон Matrix<Type> — двумерный массив(атрибуты класса: Type* t, int rows, int cols). Как можно переопределить оператор [][] для данного класса?

еще два варианта:


  int& operator() (int x, int y) { return ...; }
// or...
  int& operator[] (xy c) { return ...; }

// где xy есть

struct xy 
{
  int x,y;
  xy(int xx, int yy): x(xx),y(yy){} 
};


И использование например так:


  M m;
  m(0,1) = 2;
  m[xy(1,2)] = 2;
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.