Пусть есть класс MY_CLASS. В нем среди прочего SOME_TYPE data[][]. Имея вне класса объявление MY_CLASS mclss можно добраться до [I]data так:
[I]mclss.data
или [I]mclss, если заранее перезгрузить [].
Вопрос.
Как же сделать так, чтобы добраться до [I]data[j] таким путем: [I]mclss[j].
Наверняка ведь можно как-нибудь хитро перегрузить [][], или может существует достойная замена.
[Ответ]
RomanPshenichny 16:11 15.04.2003
> Наверняка ведь можно как-нибудь хитро перегрузить [][],
> или может существует достойная замена.
Конечно можно.
Класс двухмерный массив возвращает через operator [] ссылку на одномерный массив, который в свою очередь возвращает через свой operator [] ссылку на сам элемент.
class Array1D
{
public:
char & operator [] ( int index );
};
class Array2D
{
public:
Array1D & operator [] ( int index );
};
Спасибо!
Признаться, даже как-то стыдно стало. Я был зациклился на перегрузке [][], а о том, чтобы как с функцией попробовать, и не подумал.
Задача моя куда более емкая, чем этот пример.
Но уже приспособил, попробовал - работает!!!
[Ответ]