简单矩阵类,错误:调用私有构造函数 我正在学习C++,试图构造一个简单的矩阵类。我已经将矩阵类定义为: class Matrix { int r; // number of rows int c; // number of columns double* d; // array of doubles to hold matrix values Matrix(int nrows, int ncols, double ini = 0.0); ~Matrix(); }

简单矩阵类,错误:调用私有构造函数 我正在学习C++,试图构造一个简单的矩阵类。我已经将矩阵类定义为: class Matrix { int r; // number of rows int c; // number of columns double* d; // array of doubles to hold matrix values Matrix(int nrows, int ncols, double ini = 0.0); ~Matrix(); },c++,matrix,C++,Matrix,构造函数/析构函数是: Matrix::Matrix(int nrows, int ncols, double ini) { r = nrows; c = ncols; d = new double[nrows*ncols]; for (int i = 0; i < nrows*ncols; i++) d[i] = ini; } Matrix::~Matrix() { delete[] d; } Matrix::Matrix(int-nrows、i

构造函数/析构函数是:

Matrix::Matrix(int nrows, int ncols, double ini) {
    r = nrows;
    c = ncols;
    d = new double[nrows*ncols];
    for (int i = 0; i < nrows*ncols; i++) d[i] = ini;
}
Matrix::~Matrix() {
    delete[] d;
}
Matrix::Matrix(int-nrows、int-ncols、double-ini){
r=nrows;
c=ncol;
d=新的双[nrows*ncols];
对于(inti=0;i
问题:当我通过调用
Matrix my_Matrix(2,3)
实例化类矩阵时,我得到以下错误:
错误:调用类“Matrix”的私有构造函数
错误:类型为“Matrix”的变量具有私有析构函数


问题:为什么会发生这种情况?我如何理解失败的原因?有人能给我指点解决方案/阅读材料来帮助我理解这个问题吗。谢谢你的帮助

默认情况下,对类的属性/方法的访问是私有的。在类中添加
public:
语句:

class Matrix {
    int r; // number of rows
    int c; // number of columns
    double* d; // array of doubles to hold matrix values
public:    
    Matrix(int nrows, int ncols, double ini = 0.0);
    ~Matrix();
}

默认情况下,对类的属性/方法的访问是私有的。在类中添加
public:
语句:

class Matrix {
    int r; // number of rows
    int c; // number of columns
    double* d; // array of doubles to hold matrix values
public:    
    Matrix(int nrows, int ncols, double ini = 0.0);
    ~Matrix();
}

如果使用指针而不是
std::vector d,您将面临更大的痛苦 @保罗麦肯齐,我正在读一本关于C++和金融(SHCLogl)的书,它可能过时了。谢谢你指出这一点!不知道它是过时的还是仅仅使用过时的教学风格。如果您的目的是开始复制、返回或传递
Matrix
对象,那么您现在拥有的对于Matrix类来说是不够的。阅读3/5/0规则。@PaulMcKenzie很高兴知道这一点!我将尝试寻找其他来源。如果你有任何建议,请让我知道!谢谢你的帮助!它也可能只是如何在C++中创建类的一个例子。使用指针代替代码> STD::向量D,将导致更多的痛苦;代码> @保罗麦肯齐,我正在读一本关于C++和金融(SHCLogl)的书,它可能过时了。谢谢你指出这一点!不知道它是过时的还是仅仅使用过时的教学风格。如果您的目的是开始复制、返回或传递
Matrix
对象,那么您现在拥有的对于Matrix类来说是不够的。阅读3/5/0规则。@PaulMcKenzie很高兴知道这一点!我将尝试寻找其他来源。如果你有任何建议,请让我知道!谢谢你的帮助!它也可能只是如何在C++中创建类的一个例子。