在构造函数中创建随机矩阵

时间:2018-01-18 02:40:05

标签: c++ matrix

所以,我制作的程序会增加并添加矩阵。我用构造函数创建了类矩阵:

class Matrix
{
private:
    int row;
    int column;

public:
    int getRows()
    {
        return row;
    }

    int getColumns()
    {
        return column;
    }

    void print_matrix()
    {
        for(int i = 0; i < row; i++)
        {
            cout<<"\n";
            for(int j = 0; j < column; j++)
                cout<<matrix[i][j]<<"\t";
        }
    }

    Matrix(int row, int column);
};

Matrix::Matrix(int row, int column)
{
    this->row = row;
    this->column = column;

   int** matrix = new int*[row];
    for(int i = 0; i < row; i++)
        matrix[i] = new int[column];

    for(int i = 0; i < row; i++)
        for(int j = 0; j < column; j++)
            matrix[i][j] = (i+j)*2*3/4;


    for(int i = 0; i < row; i++)
        delete[] matrix[i];
    delete[] matrix;

}

此时我不知道如何打印我的矩阵,或者与他一起工作。在方法&#34; print_matrix&#34;我的编译器说&#34;&#39;矩阵未在此范围内声明&#39;&#34;。

1 个答案:

答案 0 :(得分:0)

您正在构造函数本身中删除已分配的矩阵。为了使它工作,

在班级中添加成员int**matrix。然后在构造函数中进行分配并在析构函数中删除它。

要进一步添加,即使您没有删除矩阵,也会出现相同的错误。您在构造函数中声明和使用的变量 - 它的生命周期在构造函数结束时结束。

现在不使用指针并分配给它,为什么不使用vector

在这种情况下,您将std::vector v;作为成员变量保留在类中,然后在构造函数中调整它的大小。

v.resize(row);
for (int i = 0; i < row; ++i)
    v[i].resize(col);