设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 802|回复: 9
打印 上一主题 下一主题

不能实现重载相加,能说出这是哪错了吗?

[复制链接]
跳转到指定楼层
1#
发表于 2009-11-6 02:01:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
实现两个矩阵的相加,但好像那个void operator+(Rectangle R1,Rectangle R2);函数实现有错误,
请高手指点



#include<iostream>
using namespace std;
int const N=2;
class Rectangle
{
private:
int Array[N][N];
public:
Rectangle();

void operator+(Rectangle R1,Rectangle R2);

void display();
void setR();
};
Rectangle::Rectangle()
{
for(int j=0;j<N;j++)
for(int i=0;i<N;i++)
Array[j][i]=0;
}
void Rectangle::setR()
{
for(int j=0;j<N;j++)
for(int i=0;i<N;i++)
cin>>Array[j][i];
}

void Rectangle::operator+(Rectangle R1,Rectangle R2)
{
for(int j=0;j<N;j++)
for(int i=0;i<N;i++)
R1.Array[j][i]=R1.Array[j][i]+R2.Array[j][i];

}

void Rectangle::display()
{
for(int j=0;j<N;j++)
{for(int i=0;i<N;i++)
cout<<Array[j][i]<<'\t';
cout<<endl;
}
}
int main()
{
Rectangle R1,R2;//R3;
R1.setR();
cout<<"输出R1: \n";
R1.display();

R2.setR();
cout<<"输出R2: \n";
R2.display();
//R1与R2相加后把值给R1
R1=R1+R2;
cout<<"输出R1: \n";
R1.display();

return 0;
}
2#
发表于 2009-11-6 02:01:43 | 只看该作者
单看了下你的函数调用

r1 = r1 + r2不对,因为你+的返回是void,不能把void赋值给r1吧!
改成
r1 + r2;
这样就好。
回复 支持 反对

使用道具 举报

3#
发表于 2009-11-6 02:01:45 | 只看该作者
谢谢,但那我也试过但还是错
回复 支持 反对

使用道具 举报

4#
发表于 2009-11-6 02:01:46 | 只看该作者
重载的方式不对啊,2元操作符一般作为友员重载而不是作为类成员重载。
并且,即使你作为类成员重载,参数应该只有一个。

声明那这样改:
friend void operator+(Rectangle R1,Rectangle R2); //友员重载
或者
void operator+(Rectangle R1); //类成员重载

实现都差不多,注意下参数和访问控制就好了。
回复 支持 反对

使用道具 举报

5#
发表于 2009-11-6 02:01:47 | 只看该作者
谢谢 去试试
回复 支持 反对

使用道具 举报

6#
发表于 2009-11-6 02:01:48 | 只看该作者
void operator+(Rectangle R1); //类成员重载
实现都差不多,注意下参数和访问控制就好了。


这个我开始就是这样试的,但就是不行

能写一下吗?
回复 支持 反对

使用道具 举报

7#
发表于 2009-11-6 02:01:49 | 只看该作者
Rectangle Rectangle::operator+(Rectangle R1)
{
Rectangle R2;
for(int j=0;j<N;j++)
for(int i=0;i<N;i++)
R2.Array[j][i]=Array[j][i]+R1.Array[j][i];
return R2;
}

你去试试,返回类型给你改回来了.
因为最好不改变操作数的值。
回复 支持 反对

使用道具 举报

8#
发表于 2009-11-6 02:01:51 | 只看该作者
谢谢,我回去再去试一下

我现在是在网吧,没编译器,有的请编完发一下错误,谢谢
回复 支持 反对

使用道具 举报

9#
发表于 2009-11-6 02:01:52 | 只看该作者
能说的都被说了!

应该没错误了哦!
回复 支持 反对

使用道具 举报

10#
发表于 2009-11-6 02:01:53 | 只看该作者
恩,谢谢无限循环,搞定了
谢晚了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-20 04:41 , Processed in 0.106945 second(s), 10 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表