所以我已经在这个班上工作了几天。并且整个程序编译得很好,除了我真的不确定如何实现我的简化
fraction& simplify(const fraction& fr)
{
int a;
int b;
int c;
if(fr.Numerator>fr.Denominator)
{
a = fr.Numerator;
b = fr.Denominator;
}
else if (fr.Numerator<fr.Denominator)
{
a = fr.Denominator;
b = fr.Numerator;
}
else
{
a=fr.Numerator;
fraction simplified(fr.Numerator/a,fr.Denominator/a);
return simplified;
}
{
while((b)!=0)
{
c=(a%b);
a=b;
b=c;
};
}
fraction simplified(fr.Numerator/a,fr.Denominator/a);
return simplified;
}
我想让它在我的输出函数中运行
ostream& operator<<(ostream& stream, const fraction& fr)
{
simplify(fr);
if(fr.Denominator==1||fr.Numerator==0)
stream << fr.Numerator;
else if(fr.Numerator>fr.Denominator)
{
cout << fr.Numerator/fr.Denominator << '+' << fr.Numerator%fr.Denominator << '/' << fr.Denominator;
}
else
stream << fr.Numerator << '/' << fr.Denominator;
return stream;
}
这导致什么都没发生。据我所知,因为分数是一个常量,但如果ostream的参数不是const,编译器对我非常不满意。我应该怎么做呢?
答案 0 :(得分:0)
你应该将操作符重载函数的结果简单地捕获到某个临时变量,因为fr是const所以不要这样做
fr=simplify(fr);
并使用该对象的属性而不是fr