【发布时间】:2018-08-04 19:27:37
【问题描述】:
我目前正在为学校开设分数课程。我们的教科书希望我们的函数能够操作主代码中显示的值。为什么 m_numer 和 m_denom 的值没有更新?
class Fraction
{
public:
Fraction();
Fraction(int numer, int demon);
void Add(Fraction left_frac, Fraction right_frac)const;
void Subtraction(Fraction let_frac, Fraction right_frac)const;
Fraction & Multiply(Fraction let_frac, Fraction right_frac)const;
void Divide(Fraction let_frac, Fraction right_frac)const;
void Display() const;
int GetNumer() const;
void SetNumer(int numer);
int GetDenom() const;
void SetDenom(int denom);
~Fraction();
private:
int m_numer;
int m_denom;
void reduce();
};
Fraction & Fraction::Multiply(Fraction left_frac, Fraction right_frac) const
{
Fraction result;
result.m_numer = left_frac.GetNumer() * right_frac.GetNumer();
result.m_denom = left_frac.GetDenom() * right_frac.GetDenom();
return result;
}
int main()
{
Fraction f1 (1, 2),
f2 (3, 4),
f3;
f3.Multiply(f1, f2);
f1.Display();
cout << " * ";
f2.Display();
cout << " = ";
f3.Display();
return 0;
}
【问题讨论】:
-
我不明白你的问题
-
在调用 f3.Multiply(f1, f2) 时,m_numer 和 m_denom 的值应该保存到 f3 中。但是,使用我当前的代码,这不会发生。
-
我认为 Add etc 应该是朋友而不是成员