我想用分子和分母的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在此范围内工作的关键是什么?如果你能解释一下的话,我会非常感激的。
发布于 2014-03-24 23:11:49
lcm是Fraction的成员。您可以在lcm的成员中将其称为Fraction;但是operator+不是成员,因此必须使用限定名Fraction::lcm。
它还需要是static。(希望已经是了,但我看不出声明是肯定的)。
https://stackoverflow.com/questions/22622426
复制相似问题