将下列代码中的安全数组改编成安全数组模板类
要求:将下列代码中的安全数组改编成安全数组模板类
可是不会啊,会的赶紧帮帮忙,跪谢!!!
#include <iostream>
#include <cstdlib>
using namespace std;
const int SIZE = 3;
class atype {
int a[SIZE];
public:
atype( ) {
register int i;
for(i=0; i<SIZE; i++) a[i] = i;
}
int &operator[](int i);
};
int &atype::operator[](int i)
{
if(i<0 || i> SIZE-1) {
cout << "\nIndex value of ";
cout << i << " is out-of-bounds.\n";
exit(1);
}
return a[i];
}
int main( )
{
atype ob;
cout << ob[2];
cout << " ";
ob[2] = 25;
cout << ob[2];
ob[3] = 44;
return 0;
}
[解决办法]
#include <iostream>
#include <cstdlib>
using namespace std;
const int SIZE = 3;
template <class T>
class atype {
T a[SIZE];
public:
atype( ) {
register int i;
for(i=0; i<SIZE; i++) a[i] = i;
}
T &operator[](int i);
};
template <class T>
T &atype<T>::operator[](int i)
{
if(i<0 || i> SIZE-1) {
cout << "\nIndex value of ";
cout << i << " is out-of-bounds.\n";
exit(1);
}
return a[i];
}
int main( )
{
atype<int> ob;
cout << ob[2];
cout << " ";
ob[2] = 25;
cout << ob[2];
ob[3] = 44;
return 0;
}
确保要使用的数组类型为线性存储结构。
SIZE是windows sdk中的结构体,这样定义可不是好习惯。
另外,你这安全数组,实用性实在。。。。