关于C++类的问题

定义一个分数类如下,要求实现各个成员函数,并在主函数中测试两个分数的加减乘除等运算。我的代码是这样的:在headerfiles中文件Rational.hclassRati... 定义一个分数类如下,要求实现各个成员函数,并在主函数中测试两个分数的加减乘除等运算。
我的代码是这样的:
在header files中
文件Rational.h
class Rational
{
private:
int a;
int b;
public:
void set(int ,int);
void show();
void jia(Rational);
void jian(Rational);
void cheng(Rational);
void chu(Rational);
};

在Sourse Files中
文件define.cpp
#include<iostream>
using namespace std;
#include"Rational.h"

void Rational::set(int x,int y)
{
a=x;
b=y;
}
void Rational::show()
{
int s=1,g,j,k;
j=a;
k=b;
while(s)
{
s=k%j;
if(s!=0)
{
k=j;
j=s;
}
else s=g;
}
cout<<"结果最简分数形式为: "<<a/g<<"/"<<b/g<<endl;
}
void Rational::jia(Rational t)
{
Rational m;
m.set((a*t.b+b*t.a),(b*t.b));
m.show();
}
void Rational::jian(Rational t)
{
Rational m;
m.set((a*t.b-b*t.a),(b*t.b));
m.show();
}
void Rational::cheng(Rational t)
{
Rational m;
m.set((a*t.a),(b*t.b));
m.show();
}
void Rational::chu(Rational t)
{
Rational m;
m.set((a*t.b),(b*t.a));
m.show();
}
文件Rational.cpp
#include<iostream>
using namespace std;
#include"Rational.h"

int main()
{
int x,y,p,q;
cout<<"输入第一个分数的分子和分母:"<<endl;
cin>>x>>y;
cout<<"输入第二个分数的分子和分母:"<<endl;
cin>>p>>q;
float e,v;
e=y/x;
v=q/p;
if(v>e)
{
int k,z;
k=x;
x=p;
p=k;
z=y;
y=q;
q=z;
}
Rational m,n;
n.set(x,y);
m.set(p,q);
m.jia(n);
m.jian(n);
m.cheng(n);
m.chu(n);
return 0;
}
编译时没有问题,;连接时出现问题如下:Compiling...
define.cpp
D:\第二次上机作业\define.cpp(5) : error C2628: 'Rational' followed by 'void' is illegal (did you forget a ';'?)
D:\第二次上机作业\define.cpp(6) : error C2556: 'class Rational __thiscall Rational::set(int,int)' : overloaded function differs only by return type from 'void __thiscall Rational::set(int,int)'
d:\第二次上机作业\rational.h(7) : see declaration of 'set'
D:\第二次上机作业\define.cpp(6) : error C2371: 'set' : redefinition; different basic types
d:\第二次上机作业\rational.h(7) : see declaration of 'set'
D:\第二次上机作业\define.cpp(30) : error C2264: 'set' : error in function definition or declaration; function not called
D:\第二次上机作业\define.cpp(36) : error C2264: 'set' : error in function definition or declaration; function not called
D:\第二次上机作业\define.cpp(42) : error C2264: 'set' : error in function definition or declaration; function not called
D:\第二次上机作业\define.cpp(48) : error C2264: 'set' : error in function definition or declaration; function not called
Error executing cl.exe.

分数问题.exe - 7 error(s), 0 warning(s)
我是大一学生,水平有限,还请不吝赐教。
我就这点财富值了,多谢能来帮助我的高手们~
展开
 我来答
黄邦勇帅哥哥
2010-03-30 · TA获得超过3987个赞
知道大有可为答主
回答量:1199
采纳率:100%
帮助的人:490万
展开全部
不知道你的程序是拿来做什么的,但把你的程序放在同一个文件中可以运行,不会出现你这里的错误,但发现另一个错误。
你把主程序放在define.cpp把对Rational类的定义放在Rational.cpp中试试,而且在你的程序中还有一处错误
void Rational::show()
{
int s=1,g,j,k;
j=a;
k=b;
while(s)
{
s=k%j;
if(s!=0)
{
k=j;
j=s;
}
else s=g; //这里g没有初始,会出错。
}
cout<<"结果最简分数形式为: "<<a/g<<"/"<<b/g<<endl;
}
xiaohuh421
2010-03-29 · TA获得超过904个赞
知道小有建树答主
回答量:897
采纳率:0%
帮助的人:380万
展开全部
给你说个经验,一般改程序的错误都要从第一个改起,因为第一个错误了,就可能导致后面的N个错误

你这里就是这种情况,
第一个错误
error C2628: 'Rational' followed by 'void' is illegal (did you forget a ';'?)
是说你的"Rational"后面跟了一个"void"是不合语法的,问你是不是忘了":"号?

第二个错:是说set函数被重载,但只是返回值类型不同,也不合语法. 也就是你函数的声明和定义出现了不同,(可能是由第一个问题造成的,你先改第一个可能后面的问题就都没有了)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
C_stu
2010-03-29 · TA获得超过456个赞
知道小有建树答主
回答量:694
采纳率:0%
帮助的人:631万
展开全部
"set"换个名字试试....
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ecc7578
2010-03-29 · TA获得超过806个赞
知道小有建树答主
回答量:715
采纳率:0%
帮助的人:701万
展开全部
你不能这么用set,除非你定义的是函数指针
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式