我在创建具有私有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