C/C++ codetemplate class Array;
template
class ArrayBody
{
friend class Array;
T* tpBody;
int iRows,iColumns,iCurrentRow;
ArrayBody(int iRsz, int iCsz)
{
tpBody= new T[iRsz*iCsz];
iRows= iRsz; iColumns = iCsz; iCurrentRow = -1;
}
public:
T& operator[](int j)
{
bool row_error,column_error;
row_error=column_error=false;
try
{
if(iCurrentRow <0 || iCurrentRow >= iRows)
row_error = true;
if(j<0 || j >= iColumns)
column_error=false;
if(row_error== true || column_error == true)
throw ‘e’;
}
catch(char)
{
if (row_error == true)
cerr<
if(column_error== true)
cerr<
cout<
}
return tpBody[iCurrentRow*iColumns+j];
}
~ArrayBody(){delete[] tpBody;}
};
template class Array
{
ArrayBody tBody;
public:
ArrayBody & operator [](int i)
{
tBody.iCurrentRow= i;
return tBody;
}
Array(int iRsz, int iCsz):tBody(iRsz,iCsz){}
};
void main()
{
Array a1(10,20);
Array a2(3,5);
int b1;
double b2;
b1 = a1[-5][10];
b1 = a1[10][15];
b1 = a1[1][4];
b2 = a2[2][6];
b2 = a2[10][20];
b2 = a2[1][4];
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/180570.html原文链接:https://javaforall.cn