0

我正在创建一个程序来获取矩阵,该函数调用matrixname .loadMatrix() 然后从那里使用它。但是,我被我的构造函数绊倒了。我有:

构造函数:

Matrix Matrix(int row, int col){

int v;

for(int i=0; i<row; i++){
    for(int j=0; j<col; j++){
        fin >>v;
        M.setElement(i, j, v);
    }
}
}

和函数loadMatrix:

Matrix Test::loadMatrix(std::string filename){
std::ifstream fin(filename);

int r;
int c;

fin >>r;
fin >>c;

return Matrix M(r, c);

}

我的问题是我应该在构造函数中做所有的fin >>吗?或者这会起作用吗?我现在无法编译并进行反复试验,因为我正在使用平板电脑工作,而我的电脑无法使用。

4

2 回答 2

0

fin 在函数 loadMatrix 中是本地的。它在 Matrix 构造函数中未定义

于 2013-09-18T16:38:22.713 回答
0

fin在您的 Matrix 构造函数的范围内声明,所以这不是这样做的方法。

您不能将所有整数读入一维数组,然后通过引用矩阵将数组作为其内部数据传递吗?如何查看数据取决于您,但这两种方法称为行专业列专业

一个 2x3 矩阵的行主要存储的例子,取自维基百科是

  int[6] = {0,1,2,3,4,5}
            ^     ^

其中每个新行对应于每个第三个元素。

相同的列主要存储将是

  int[6] = {0,3,1,4,2,5}
            ^   ^   ^

其中每个第二个元素对应于一列。

于 2013-09-18T16:47:14.420 回答