我试图通过传递给将进行乘法的类来乘以两个矩阵。我在定义构造函数时遇到问题请帮我解决这个问题..(错误如下所示)
我的头文件是MatMul.h:
function.*\{\n*}
并且maincpp文件是
#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];
}
}
}
}
};
显示
#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;
}
请您确定错误并进行更新。
答案 0 :(得分:0)
静态数组大小不能来自非const变量。
这将编译正常(制作p
,q
和r
const
):
const 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}};
此外,无需包括<iostream>
两次(甚至不包括一次,因为您使用它)。 using namespace std;
在您的代码中也没用。