Вечер добрый!
Как правильно перегрузить operator[] для класса двумерного массива?
Хотелосьбы получить такое: mas[i][j]
Спасибо!
Здравствуйте, Demokratizator, Вы писали:
D>Вечер добрый!
D>Как правильно перегрузить operator[] для класса двумерного массива?
D>Хотелосьбы получить такое: mas[i][j]
D>
D>Спасибо!
Это сделать
низзя можешь и не капашиться...
... << RSDN@Home 1.1.3 stable >>
Hello, Demokratizator!
D> Вечер добрый!
D> Как правильно перегрузить operator[] для класса двумерного массива?
D> Хотелосьбы получить такое: mas[i][j]
D>
D> Спасибо!
Можно сделать чтоб оператор[] класса двумерного массива возвращал некий объект (итератор?) у которого тоже определен оператор[] который в свою очередь возвращает значение.
WBR, Igor Evgrafov.
Posted via RSDN NNTP Server 1.9 gamma
Здравствуйте, Shady, Вы писали:
S>Это сделать низзя можешь и не капашиться...
Зя!
Нужно возвращать прокси — объект, представляющий модель одномерного массива.
class dim3
{
public:
data& at(int x, int y, int z);
data const& at(int x, int y, int z) const;
template<class D, class H>
class dim1
{
H* host;
int x, y;
public:
dim1(H* host, int x, int y) : host(host), x(x), y(y) {}
D operator[](int z) const { return host->at(x,y,z); }
};
template<class D, class H>
class dim2
{
H* host;
int x;
public:
dim2(H* host, int x) : host(host), x(x) {}
dim1<D,H> operator[](int y) const { return dim1<D,H>(host,x,y); }
};
dim2<dim3 , data& > operator[](int x) { return dim2<dim3 , data& >(this,x); }
dim2<dim3 const, data const&> operator[](int x) const { return dim2<dim3 const, data const&>(this,x); }
};
Поскольку прокси возвращаются как rvalue, их операторы должны быть const.
Здравствуйте, Demokratizator, Вы писали:
D>Вечер добрый!
D>Как правильно перегрузить operator[] для класса двумерного массива?
D>Хотелосьбы получить такое: mas[i][j]
D>
D>Спасибо!
struct A {
struct INDEX {
const int i,j;
INDEX(int ii,int jj):i(ii),j(jj) {};
};
char operator[](const A::INDEX index) {
return m_array[index.i][index.j];
};
private:
char m_array[10][20];
};
Здравствуйте, Кодт, Вы писали:
К>Зя!
я имел ввиду, что нет такого для перегрузки такого оператора [][]
... << RSDN@Home 1.1.3 stable >>