-1
私は、乗算を行うクラスに渡すことによって2つの行列を乗算しようとしています。クラスコンストラクタを定義する正しい方法は何ですか?
#include<iostream>
#include<iostream>
using namespace std;
class MatMul
{
double **C;
int row,col,common;
public:
MatMul(int p,int q,int r)
{
row=p; col=q,common=r;
C=new double *[row];
for(int i=0;i<row;i++)
C[row]=new double [col];
}
void multiply(double A[][3],double B[][3],int p,int q,int r)
{
for (int i=0;i<row;i++)
{
for (int j=0;j<col;j++)
{
C[i][j]=0;
for(int k=0;k<r;k++)
{
C[i][j]=C[i][j]+A[i][k]*B[k][j];
}
}
}
}
};
とmaincppファイルが
です:コンストラクタを定義しながら、私は私のヘッダファイルとしてMatMul.hあるこの..(errrorは以下の通りである)で私を助けてください、問題に直面しています
#include<iostream>
#include<iostream>
using namespace std;
#include"MatMul.h"
int main()
{
int p=3,q=3,r=3;
double A[p][r]={{1,0,0},{0,1,0},{0,0,1}};
double B[r][q]={{1,0,0},{0,1,0},{0,0,1}};
MatMul c(p,q,r);
c.multiply(A,B,p,q,r);
return 0;
}
それはあなたがエラーを特定し、それを更新することができますしてください
error: no matching function for call to ‘MatMul::multiply(double [p][r], double [r][q], int&, int&, int&)’
を示しています。
'q'と' r'が定数でない場合、double A [p] [r] 'は標準ではありません。 'const int p = 3、q = 3'を使ってみてください – Ajay
double A [p] [r] = {{1,0,0}、{0,1,0}、{0,0 、1}} '。初期値は固定(3x3)で、 'p'、' r'は「変数」です。単純に 'double A [3] [3]'を入れます。 – i486