1

我无法解释为什么会出现这个逻辑错误!看一看:

这是在标题中 -

class PayRoller
{
public:
    void initialize();

    double getNum();
    void setNum(double);
    double getGrossPay();
    void setGrossPay(double);
    double getWage();
    void setWage(double);
    double getAddTotal();
    void setAddTotal(double);
}

这是创建对象后调用的第一个函数-

void PayRoller::initialize();
{
    setGrossPay(0.0);
    setWage(0.0);
    setAddTotal(0.0);
    cout << (getGrossPay() + getAddTotal());
    start();
}

最后是getter和setter-

void PayRoller::setGrossPay(double temp)
{
grossPay = temp;
}

double PayRoller::getWage()
{
return wage;
}

void PayRoller::setWage(double temp)
{
wage = temp;
}

double PayRoller::getAddTotal()
{
return addTotal;
}

void PayRoller::setAddTotal(double temp)
{
wage = temp;
}

当我启动代码(没有调试)时,我在 initialize() 中从 cout 获得的值是 -9.25596e+061

我在这里做错了什么?我似乎无法弄清楚。提前致谢!

4

3 回答 3

1

您的 setAddTotal 方法没有设置 addTotal,而是设置工资。

void PayRoller::setAddTotal(double temp)
{
    wage = temp;
}

应该

void PayRoller::setAddTotal(double temp)
{
    addTotal = temp;
}

否则, addTotal 实际上并没有设置为 0,它只是包含垃圾。

于 2013-03-01T06:44:24.007 回答
0

似乎岁差问题编号几乎为 0。尝试将值更改为 long 或 int,这可以验证。

于 2013-03-01T06:26:06.620 回答
0

您需要废弃该initialize()方法并使用成员初始化列表

你所说的初始化,其实就是赋值,初始化只能在成员初始化列表中进行。您需要的是初始化,即:在创建时将值绑定到成员,而不是在创建后将值分配给成员。

分配方法的问题是您需要依赖类的用户以您定义的方式调用方法,而他们可能不会。

于 2013-03-01T06:19:09.997 回答