#include<iostream>
using namespace std;
template<typename T>
class array2d
{
private:
class aarray1d
{
T* data = nullptr;
public:
void Alloc(int nsize)
{
data= new T[nsize];
}
T& operator [](int n)
{
return data[n];
}
const T& operator [](int n)const
{
return data[n];
}
};
public:
array2d(int nsize2d, int nsize1d)
{
m1d = new aarray1d[nsize2d];
initporxy(nsize2d, nsize1d);
}
void initporxy(int nsize2d, int nsize1d)
{
aarray1d* ptemp = m1d;
for (int i = 0; i < nsize2d; ++ptemp,++i)
{
ptemp->Alloc(nsize1d);
}
}
aarray1d& operator [](int n)
{
return m1d[n];
}
const aarray1d& operator [](int n)const
{
return m1d[n];
}
aarray1d *m1d=nullptr;
};
int main()
{
array2d<int> Data(3,3);
Data[1][1] = 69;
cout << Data[1][1] << endl;
return 0;
}
利用代理类实现二维数组类对象的[][]操作
最新推荐文章于 2024-07-12 10:56:01 发布