18.11.2007, 22:14
общий
это ответ
Здравствуйте, Щербинин Павел Алексеевич!
data - двумерный массив
int* operator [](int index)
{
return *(data+index);
}
Например:
data[3]
Вы хотите увидеть 3-ю строку - посылаете туда index=3...Из операторе Вам возвращается одномерный массив.
data[3][1]
После первого шага Вам вернулась третья строка...А затем из этой строки с index=1 получаете 1-й элемент...
На всяки случай:
data[3], это тоже самое, что и *(data+3)
data[3][1] в свою очередь тоже самое, что и *(*(data+3)+1)
В приложении программа с этим перегруженным оператором...Только с шаблоном класса...
Приложение:
#include<iostream.h>#include<conio.h>template <class T> class Array{T** data;int size1;int size2;public: Array(int a,int b) { data= new T*[a*b]; size1=a; size2=b; } ~Array() { delete data; cout<<endl<<"Array destroyed"; }T* operator [](int index) { return *(data+index); }void vvod(){cout<<"Input eltments of array"; for(int i=0;i<size1;i++) { for(int j=0;j<size2;j++) { gotoxy(j*8+1,i+2); cin>>*(*(data+i)+j); } }}void vyvod(){cout<<endl<<"Inputed araay: "<<endl; for(int i=0;i<size1;i++) { for(int j=0;j<size2;j++) { cout<<data[i][j]<<" "; } cout<<"\n"; }}};void main(){Array<int>a(3,3);clrscr();a.vvod();a.vyvod();getch();}