通过引用传递时值不变

时间:2014-04-16 19:42:47

标签: c++ matrix

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.另外,我无法更改方法参数,因为我有一个强制我们以特定方式执行项目的教师(荒谬,我知道)。

编辑。我在课堂定义中添加了。

1 个答案:

答案 0 :(得分:1)

如果您希望在A块之外显示Bif,则必须以更大的范围声明它们。如果你已经在更大的范围内声明它们,那么你将在if块中隐藏这些名称,并使用一个在块之后消失的本地对象,保持外部对象不变。