所以,我制作的程序会增加并添加矩阵。我用构造函数创建了类矩阵:
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;。
答案 0 :(得分:0)
您正在构造函数本身中删除已分配的矩阵。为了使它工作,
在班级中添加成员int**matrix
。然后在构造函数中进行分配并在析构函数中删除它。
要进一步添加,即使您没有删除矩阵,也会出现相同的错误。您在构造函数中声明和使用的变量 - 它的生命周期在构造函数结束时结束。
现在不使用指针并分配给它,为什么不使用vector
?
在这种情况下,您将std::vector v;
作为成员变量保留在类中,然后在构造函数中调整它的大小。
v.resize(row);
for (int i = 0; i < row; ++i)
v[i].resize(col);