这是两分数相加的程序,为啥会提示出错?哪里错了?求高手解答,实在感激不尽!

#include<iostream>
using namespace std;
class Fract
{
public:
Fract(int a=0,int b=1)
{
num=a;
den=b;
}
int gcd();
Fract add(Fract f);
void show();
private:
int num,den;
};
int gcd(int m,int n)
{
int r;
if(m<n)
{
r=m;
m=n;
n=r;
}
while(r=m%n)
{
m=n;
n=r;
}
return n;
}
Fract Fract::add(Fract f)
{
Fract sum;
sum.den=den*f.den;
sum.num=f.den*num+den*f.num;
int x=gcd(sum.num,sum.den);
sum.num=sum.num/x;
sum.den=sum.den/x;
return sum;
}
void Fract::show()
{
cout<<num<<"/"<<den<<endl;
}
int main()
{
Fract f1(1,5),f2(7,20),f3;
f3=f1.add(f2);
f3.show();
return 0;
}

富国沪深
浏览 119回答 2
2回答

杨魅力

你在类Fract里申明了一个公有函数int gcd(); 但是没有实现。又定义实现了一个全局函数&nbsp;&nbsp;int gcd(int m,int n),在Fract Fract::add(Fract f) 函数的实现里int x=gcd(sum.num,sum.den);这个会调用类 Fract里申明的函数int gcd(); 参数不符,就会报错。

aluckdog

gcd函数定义了两个类型。你把gcd(int m,int n),改一个名字就可以了。
打开App,查看更多内容
随时随地看视频慕课网APP