プライベート 2D 動的配列を持つテンプレート クラスのデストラクタの作成に問題があります。何らかの理由で、マトリックスへの情報の入力が完了するとすぐに、デストラクタがマトリックスを破棄します。コンパイルは正常に行われるため、何が問題なのかわかりませんが、最初の 2 つの行列の情報を入力し、プログラムがそれらを乗算しようとするとエラーが発生します。デストラクタを取り除くと、コードは機能します。
template <class T>
class matrix
{
//sudo
friend matrix operator + , *,-,(bunch of friends used to overload)
//end sudo
public:
matrix(): rows(0), cols(0){}
int Arows(){return rows;}
int Acols(){return cols;}
class Proxy
{
matrix& _a;
int _i;
public:
Proxy(matrix& a, int i) : _a(a), _i(i){}
int& operator[](int j) {return _a.Array[_i][j];};
};
Proxy operator[](int i) {return Proxy(*this,i);}
~matrix();
private:
T ** Array;
int rows;
int cols;
};
template<class T>
matrix<T>::~matrix()
{
for (int i=0;i<rows;i++)
delete [] Array[i];
delete [] Array;
}