我在創建具有私有2d動態數組的模板類的析構函數時遇到問題。由於某種原因,只要我完成將信息輸入到矩陣中,析構函數就會銷燬矩陣。不知道出了什麼問題,因爲它編譯得很好,但是當我輸入前兩個矩陣的信息並且程序試圖將它們相乘時出錯。代碼的作品,如果我擺脫了析構函數。爲具有許多朋友函數的模板類(2D動態)創建析構函數C++
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;
}
請參閱[三規則](http://stackoverflow.com/questions/4172722/what-is-the-rule-of-three)和[規則零](http://rmartinho.github .COM/2012/08/15 /規則的-zero.html)。 –
感謝他們兩人現在 – blu