大家帮我看看哪里有错?
#include<iostream.h>
class fix
{
public:
int m,n;
float val;
fix(int z,int x,float v=0.0)
{
m=z;
n=x;
val=v;
}
operator =(float val)
{
this->val=val;
}
};
operator +(fix&c1,fix&c2)
{
float val;
val=c1.val+c2.val;
return val;
}
main()
{
fix x(6,4);
fix y(6,4);
fix z(6,4);
x=10.5;
y=10.25;
z=x+y;
cout<<z.val<<endl;
}
应该是20.75
但出来是20,return val;的时候val还是20.75的
但是到z=x+y;后val=20了,是哪里出了错?
问题点数:20、回复次数:7Top
1 楼Andy84920(你也不懂)回复于 2004-05-02 14:01:08 得分 20
#include<iostream>
using namespace std;
class fix
{
public:
int m,n;
float val;
fix(int z,int x,float v=0.0)
{
m=z;
n=x;
val=v;
}
fix operator=(float val)
{
this->val=val;
}
};
fix operator+(fix&c1,fix&c2)
{
fix val(0,0);
val=c1.val+c2.val;
return val;
}
int main()
{
fix x(6,4);
fix y(6,4);
fix z(6,4);
x=10.5;
y=10.25;
z=x+y;
cout<<z.val<<endl;
}
Top
2 楼Andy84920(你也不懂)回复于 2004-05-02 14:02:58 得分 0
this->val=val;
后面加一个:return *this;
不好意思,忘记了。Top
3 楼Fragile()回复于 2004-05-02 14:04:44 得分 0
楼上的,谢谢回答。
但是你加的那句using namespace std;是什么意思
而且加进去以后我编译的时候有错误error C2871: 'std' : does not exist or is not a namespaceTop
4 楼Fragile()回复于 2004-05-02 14:09:55 得分 0
哦,没错误了,是我搞错了,谢谢你。
但是using namespace std;是什么意思我还是不知道,想问问。Top
5 楼zxs790501(沧海一粟)回复于 2004-05-02 14:29:25 得分 0
operator +()
函数的返回类型是int类型,不能返回float类型!
查MSDNTop
6 楼zxs790501(沧海一粟)回复于 2004-05-02 14:31:21 得分 0
#include<iostream>
using namespace std;
等同于
#include<iostream.h>Top
7 楼loguliu1981(GUMP)回复于 2004-05-02 14:34:54 得分 0
使用命名空间,c++教材上都有的。让编译器默认的命名空间是stdTop




