c++ 定义矩阵类:运算符<<、>>重载输出输入矩阵 有问题

coolbeethunder 2009-02-08 10:01:12
//源程序如下:(知道的帮忙改下阿)

#include<iostream.h>
#define m 2
#define n 3
//using namespace std;

class Matrix
{
public:
Matrix(int a[m][n])
{
int i,j;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
a[i][j]=0;
}
istream &operator >>(istream &,Matrix &);
ostream &operator <<(ostream &,Matrix &);
friend Matrix operator +(Matrix,Matrix);
private:
int a[m][n];
};

istream &operator >>(istream &input,Matrix &c)
{
cout<<"ÊäÈëÒ»¸ö'm'ÐÐ'n'ÁеľØÕó"<<endl;
int i,j;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
input>>c.a[i][j];
return input;
}

ostream &operator <<(ostream &output,Matrix &c)
{
int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
output<<c.a[i][j];
output<<endl;
}
return output;
}

Matrix operator +(Matrix &c1,Matrix &c2)
{
Matrix c3
int i,j;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
c3.a[i][j]=c1.a[i][j]+c2.a[i][j];
return c3;
}

int main()
{
Matrix a,b,c;
cin>>a>>b;
cout<<"a="<<a<<endl;
cout<<"b="<<b<<endl;
cout<<"c="<<c<<endl;
c=a+b;
a=a+b;
cout<<"c=a+b"<<c<<endl;
cout<<"a=a+b"<<a<<endl;
return 0;
}

//我是用VC++6.0编译的。
//运算符<<、>>重载输出输入矩阵 有问题
...全文
575 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
coolbeethunder 2009-02-10
  • 打赏
  • 举报
回复
2、4楼说的对,感谢了
deerwin1986 2009-02-08
  • 打赏
  • 举报
回复
Matrix(int a[m][n])
这个构造函数就有问题... m和n根本传不进去
<<和>>要声明为友元...
王旺旺旺 2009-02-08
  • 打赏
  • 举报
回复
所以应定义为友元
王旺旺旺 2009-02-08
  • 打赏
  • 举报
回复

friend istream &operator >>(istream &,Matrix &);
friend ostream &operator < <(ostream &,Matrix &);


这两个不是成员函数
arong1234 2009-02-08
  • 打赏
  • 举报
回复
你什么问题都不说,谁帮你?

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧