私は次のクラスを持っています:
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を呼び出すときにヒープ破損エラーが発生することです。私は何が間違っているのですか?(私の推測では、それは私がそれらの配列要素にアクセスする方法です)