【问题标题】:How to use function with parameters in class , c++?如何在类,c ++中使用带参数的函数?
【发布时间】:2015-12-13 22:50:41
【问题描述】:

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

.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;

【问题讨论】:

  • 到底是什么问题?
  • matrix 看来,您在析构函数中没有做任何特别的事情。如果是这种情况,请完全忽略它。此外,sum 应该看起来像 static matrix sum(...) 并以 return m3; 结尾。你可以这样称呼它:m3 = matrix::sum(...);.

标签: c++ class matrix sum


【解决方案1】:

问题在于 sum 函数,您在其中创建了一个新的对象矩阵 m3,并在该对象上执行加法,而不是 this。

做:this-&gt;v[a][b] = m1.v[a][b] + m2.v[a][b];

而不是:m3.v[a][b] = m1.v[a][b] + m2.v[a][b];

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

【讨论】:

  • @Julija 我更新了答案,还包括了 iz 不起作用的问题,它正在寻找 m3 的 i 和 j 值,但是当你从 sum 函数创建对象时你从来没有设置它们,因此 iz 中的循环循环 0 次,没有任何打印。
  • @Julija 没问题,我们都去过那里 :) 我很高兴它有帮助 :)
  • 它仍然报告问题,主要的一切都好吗?
  • int main() 中你应该输入matrix m3(6,6); 而不是matrix m3;
猜你喜欢
  • 2020-09-17
  • 2016-11-13
  • 1970-01-01
  • 1970-01-01
  • 2019-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-11
相关资源
最近更新 更多