[英]Overloading operator + for fractions (using lcm)
我想使用分子和分母的lcm計算兩個分數的總和。 這意味着結果是我想得到簡化形式的分數。 我有以下cpp文件。
#include <iostream> //need it for cin and cout
#include "fraction.h"
Fraction::Fraction()
{
num = 1;
den = 1;
}
Fraction::Fraction(int n, int d)
{
int tmp_gcd = gcd(n, d);
num = n / tmp_gcd;
den = d / tmp_gcd;
}
int Fraction::gcd(int a, int b)
{
int tmp_gcd = 1;
// Implement GCD of two numbers;
return tmp_gcd;
}
int Fraction::lcm(int a, int b)
{
return a * b / gcd(a, b);
}
Fraction operator+(const Fraction&a,const Fraction &b)
{
int c=(lcm(b.den,a.den)/b.den)*a.num+b.num*(lcm(b.den,a.den)/a.den);
int d=lcm(b.den,a.den);
Fraction result(c,d);
return result;
}
但是,此代碼不起作用,因為在此范圍內未定義lcm。
使lcm在此范圍內工作的關鍵是什么? 如果您能解釋更多,我將非常感謝。
lcm
是Fraction
的成員。 您可以在Fraction
成員中將其稱為lcm
; 但是operator+
不是成員,因此您必須使用限定名稱Fraction::lcm
。
它還需要是static
。 (希望它已經是,但是我無法確定該聲明)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.