-1
我想通過傳遞給將會乘法的類來乘兩個矩陣。我面臨的問題,同時定義構造函數,請幫助我這個..(errror如下圖所示)什麼是定義類構造函數的正確方法?
我的頭文件是MatMul.h爲:
#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文件
#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}}'。 init值是固定的(3x3),'p','r'是「變量」。簡單地說'雙A [3] [3]'。 – i486