【发布时间】:2016-07-04 11:14:33
【问题描述】:
我编写了一个程序来用 C++ 实现分数。我之所以做到这一点,是因为这是我在家里学习的 C++ 课程中的一种家庭作业。该程序可以编译,但在启动后会很快崩溃。我自己搜索了一个答案,我发现它在创建新对象时崩溃了。这是错误的代码。
//a and b are for the numerators and denominator in the fraction: a/b
ZFraction::ZFraction(int numer, int denom):m_numer(numer), m_denom(denom)//this constructor made it crash
{
if(m_numer != 0)
{
m_numer = m_denom % m_numer;
m_denom = m_denom/m_numer;
}
else
{
cout << "Fraction impossible";
}
}
为什么会崩溃?提前致谢。
【问题讨论】:
-
你检查了错误的值为零,它是
m_a不能为零。零可以除以任何东西,但什么都不能被零除。 -
@Jägermeister 您似乎倒退了;
m_a和m_b是班级成员。a和b是参数,仅用于初始化成员。在这方面一切都很好。 -
你需要复习你童年数学书中关于分数的部分。这不是你简化分数的方式。
-
@Angew Uups。感谢您的澄清。
-
不,不要发布完整的项目。您必须做一些工作来隔离问题。