class Matrix {
private:
double data[rows*columns];
public:
Matrix(Vector&, Vector&);
void add(const Matrix&);
void mult(double);
double trace();
double norm();
void print();
};
void Matrix::print() {
cout.setf(ios::showpoint|ios::fixed);
cout.precision(3);
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
cout << setw(2) << setfill('0') << data[i * rows + j] << " ";
}
cout << endl;
}
}
void Matrix::add(const Matrix &m){
for(int i=0;i<rows*columns;i++){
data[i]+=m.data[i];
}
}
menu () {
//...
else if (choice==3){
cout<<"A+B="<<endl;
Matrix A(a,b);
Matrix B(c,d);
A.add(B);
A.print();
}
}
我正在开发一个项目,它接受矢量的值并创建两个矩阵。提供代码添加了两个矩阵。添加矩阵并打印A时,不更新Matrix A的值。当再次选择打印矩阵A的选择时,输出矩阵的第一个值。我已正确创建矩阵和b的代码,完全按照我的要求打印出来,并将它们加在一起。但是,正如我所说,即使我通过引用调用,add函数也不会更改矩阵A.另外,我无法更改方法参数,因为我有一个强制我们以特定方式执行项目的教师(荒谬,我知道)。
编辑。我在课堂定义中添加了。
答案 0 :(得分:1)
如果您希望在A
块之外显示B
或if
,则必须以更大的范围声明它们。如果你已经在更大的范围内声明它们,那么你将在if
块中隐藏这些名称,并使用一个在块之后消失的本地对象,保持外部对象不变。