求大神帮忙看看C++矩阵乘法 下边是我的程序 以及运行后出现的问题

#include<iostream>#include<ctime>#include<cmath>usingnamespacestd;classmatrix{private... #include <iostream>
#include <ctime>
#include <cmath>
using namespace std;

class matrix
{private:
int mat[4][4];

public:
void input();
void display();
matrix operator * (matrix &a,matrix &b);
};

void matrix::input()
{ for (int i=0;i<4;i++)
for (int j=0;j<4;j++)
cin>>mat[i][j];

}

void matrix::display()
{for (int i=0;i<4;i++)

{ for (int j=0;j<4;j++)
cout<<mat[i][j]<<" ";
cout<<endl;
}
}

matrix operator * (matrix &a,matrix &b)
{matrix c;
for (int i=0;i<4;i++)
{ for (int j=0;j<4;j++)
for(int k=0;k<4;k++)
c.mat[i][j]+=a.mat[i][k]*b.mat[k][j];
}
return c;

}

int main()
{
matrix a;
cout<<"shuru:"<<endl;

a.input();

cout<<"a wei:"<<endl;
a.display();

return 0;
}
出现的问题:

error C2804: binary 'operator *' has too many parameters
1.cpp(38) : error C2248: 'mat' : cannot access private member declared in class 'matrix'
1.cpp(8) : see declaration of 'mat'
cpp(38) : error C2248: 'mat' : cannot access private member declared in class 'matrix'
1.cpp(8) : see declaration of 'mat'
1.cpp(38) : error C2248: 'mat' : cannot access private member declared in class 'matrix'
1.cpp(8) : see declaration of 'mat'
Error executing cl.exe.
貌似就是矩阵乘法的定义有问题
展开
 我来答
黑之仙客
推荐于2016-07-09 · TA获得超过156个赞
知道小有建树答主
回答量:234
采纳率:89%
帮助的人:138万
展开全部

重载的*运算符,是针对对象的,也就是说c = a*b,其中a是你的对象,b才是参数,所以改成

matrix operator*(matrix &b),然后函数内的所有a.mat改成mat


下面是我很早以前写的 (有点弱的代码。。):

Matrix<T> operator*(const Matrix<T> obj)
{
Matrix<T> tmp(rows, obj.cols);
mul(obj, tmp);
return tmp;
}
Matrix<T> mul(const Matrix<T> obj, Matrix<T> &result)
{
if(obj.rows != cols || !rows || !cols || !obj.rows || !obj.cols)
notMatch(result);
result.resize(rows, obj.cols);
for(int i = 0;i < rows;i++)
for(int j = 0;j < obj.cols;j++)
for(int k = 0;k < cols;k++)
result.mat[i][j] += mat[i][k]*obj.mat[k][j];
return result;
}
电灯剑客
科技发烧友

2015-11-04 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:1.2万
采纳率:83%
帮助的人:4911万
展开全部
声明的时候用
matrix operator * (matrix &b);
实现的时候用

matrix matrix::operator * (matrix &b){......}
a不需要

另外,别忘了把c的元素初始化为0
追问
谢谢你哈~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式