#include "stdafx.h"
#include <stdlib.h>
#include <iostream.h>
//整形数组
//对元素进行管理的类,可以叫容器类
template<typename T, int nSize = 5>
class IntegerArray
{
private:
T *m_pIntegerArray;
//大小
int m_nSize;
public:
IntegerArray();
~IntegerArray()
{
if ( m_pIntegerArray )
{
delete[] m_pIntegerArray;
m_pIntegerArray = NULL;
}
m_nSize = 0;
}
T &GetAt(int nIndex)
{
if ( nIndex < 0 || nIndex >= m_nSize )
{
exit(-1);
}
return m_pIntegerArray[nIndex];
}
void SetAt(int nIndex,T nData)
{
if ( nIndex < 0 || nIndex >= m_nSize )
{
exit(-1);
}
m_pIntegerArray[nIndex] = nData;
}
void PrintAll()
{
for ( int i = 0 ;i < m_nSize ; i++ )
{
cout << GetAt(i) << endl;
}
}
int GetSize() const
{
return m_nSize;
}
};
//构造函数
template<typename T, int nSize>
IntegerArray<T, nSize>::IntegerArray()
{
if ( nSize <= 0 )
{
exit(-2);
}
m_pIntegerArray = new T[m_nSize = nSize];
}
int main(int argc, char* argv[])
{
IntegerArray<int> theIntArray;
cout << theIntArray.GetSize() << endl;
IntegerArray<char,10> theArray;
for (int i = 'a' ; i < 'z'; i++)
{
if (i - 'a' >= 10)
{
break;
}
theArray.GetAt(i-'a') = i;
}
theArray.PrintAll();
return 0;
}