我有以下课程:
template <typename T>
class matrix
{
private:
int _n;
T* array;
public:
matrix(): _n(0)
{
array = new T[_n * _n];
}
matrix(int n): _n(n)
{
if( n < 0 )
throw "Invalid array size!";
array = new T[_n * _n];
}
~matrix()
{
delete[] array;
}
void Set(const int x, const int y,const T val)
{
if( ( x<0 || x>_n ) && ( y<0 || y>_n) )
throw "Invalid index";
array[x*_n + y] = val;
}
T& Get(const int x, const int y)
{
if( ( x<0 || x>_n ) && ( y<0 || y>_n) )
throw "Invalid index";
return array[x*_n + y];
}
};
并以这种方式使用它:
matrix<int> k(5);
k.Set(5,5,6);
cout<<k.Get(5,5);
问题是调用 Set 时出现堆损坏错误。我究竟做错了什么?(我猜这是我访问它们数组元素的方式)