【发布时间】:2015-08-21 12:20:37
【问题描述】:
前几天我写了一个模板类,如下所示:
template <class T>
class Matrix {
private:
T ** matrix;
int n;
int m;
.
.
.
}
和构造函数:
template <class T>
Matrix<T>::Matrix(int _n, int _m)
{
n = _n;
m = _m;
matrix = new T * [n];
for (int i = 0; i < n; i ++)
{
matrix[i] = new T[m];
}
}
现在我想创建一个像这样的析构函数:
template <class T>
aghMatrix<T>::~aghMatrix()
{
for (int i = 0; i < n; i ++)
{
delete [] matrix[i];
}
}
起初我以为它可以解决所有问题,但我错了。
在函数main:
Matrix<int> a; //destructor works find
Matrix<int*>a; //error destructor
如何解决这个问题?
【问题讨论】:
-
由于多种原因,您发布的代码甚至无法编译。请张贴SSCCE,然后复制粘贴您看到的确切错误消息,error destructor 没有意义。
-
您没有显示您的示例 实际上 调用的默认构造函数的代码。您展示了您的示例不调用的构造函数的代码(除非您的参数具有默认值,但您没有展示)。
-
顺便说一句,
delete[] matrix;不见了...简化您的生活并使用std::vector。
标签: c++ templates destructor