如何在class,c ++中使用带参数的函数?

时间:2015-12-13 22:50:42

标签: c++ class matrix sum

我必须总结两个矩阵(tridiagonal),一切正常,但我不知道如何在main中调用函数和。我试过了,但它报告错误。任何帮助或建议将不胜感激。

·H:

class matrix
{
public:
matrix();
~matrix();
matrix(int i, int j);

void insert();
void iz();
void sum(matrix m1, matrix m2);

private:
int i;
int j;
vector<vector<int> > v;
};

的.cpp

matrix::matrix()
{
}


matrix::matrix()
{
}

matrix::matrix(int i, int j){
v.resize(i);
for (int k = 0; k < i; k++)
    v[k].resize(j);
this->i = i;
this->j = j;
}


void matrix::insert()
{
  int x;
  for (int a = 0; a < i; a++){
    for (int b = 0; b < j; b++){
        if (abs(a-b) <= 1){
            x = rand() % 100+1;
            v[a][b] = x;
        }
        else
            v[a][b] = 0;
     }
    }
    }

void matrix::iz()
{
 for (int a = 0; a < i; a++){
    for (int b = 0; b < j; b++)
        cout << v[a][b] << " ";
    cout << endl;
 }

}

void matrix::sum(matrix m1, matrix m2)
{
  matrix m3;
  int c = m1.i;
  int d = m1.j;
  if (m1.i == m2.i && m1.j == m2.j)
  {
    for (int a = 0; a < c; a++)
    {
        for (int b = 0; b < d; b++){
            m3.v[a][b] = m1.v[a][b] + m2.v[a][b];
        }
        cout << endl;
      }
  }
  else
    cout << "Error" << endl;
   }

matrix m1(6, 6);
m1.insert();
m1.iz();
cout << endl << endl;

matrix m2(6, 6);
m2.insert();
m2.iz();

问题在于:

/*
matrix m3;
m3.sum(m1, m2);
m3.iz();
*/

cin.ignore();
cin.get();

return 0;

1 个答案:

答案 0 :(得分:1)

问题在于sum函数,你可以在其中创建一个新的对象矩阵m3,并在该对象上添加,而不是这个。

执行:this->v[a][b] = m1.v[a][b] + m2.v[a][b];

代替:m3.v[a][b] = m1.v[a][b] + m2.v[a][b];

此外,您需要将this->ithis->j变量设置为m1.im1.j,此外您还应该调整this->v的所有大小调整