我有一个 Matrix 类,我想在其中定义一个静态方法来将两个矩阵相乘。
当我尝试编译这个 C++ 代码时,我得到一个错误,上面写着“没有匹配的构造函数用于初始化 'Matrix'”!
这是我的构造函数签名:
Matrix(Matrix& A);
这是我的乘法方法:
static Matrix mult(Matrix &A,Matrix &B){
if (A.n != B.m)
throw 2;
Matrix C(A.m,B.n);
for (int i=0;i<A.m;i++){
for (int j=0;j<B.n;j++){
for (int k=0;k<A.n;k++)
C.matrix[i][j] += A.matrix[i][k] * B.matrix[k][j];
}
}
return C;
}
这是触发 mult 函数并填充 z 变量的代码:
Matrix z = Matrix::mult(x,y);
问题是什么 ?!为什么我的构造函数与返回值不匹配?!
这是我的整个矩阵类:
class Matrix{
public:
int m,n;
bool** matrix;
Matrix(int m,int n);
Matrix(Matrix& A);
int get_m();
int get_n();
void set(int,int,bool);
bool get(int,int);
Matrix& add(Matrix&);
Matrix& operator=(Matrix&);
friend ostream& operator << (ostream& ,Matrix&);
string toString();
~Matrix();
static Matrix mult(Matrix &A, Matrix &B);
};