我的功能的顺序是否重要?

时间:2013-03-01 06:15:24

标签: c++ visual-studio-2012

我无法解释为什么我收到这个逻辑错误!看看:

这是在标题中 -

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();
}

最后,这里有吸气剂和设定者 -

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;
}

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

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

3 个答案:

答案 0 :(得分:1)

您的setAddTotal方法未设置addTotal,即其设置工资。

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

应该是

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

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

答案 1 :(得分:0)

您需要废弃initialize()方法并使用 member initialization list

您所谓的 初始化 实际上是 分配 ,初始化只能在成员初始化列表中完成。您需要的是初始化,即:在创建时将成员 绑定 > 创作。

分配方法的问题在于,您需要依靠类的用户以您定义的方式调用方法,而这些方法可能没有。

答案 2 :(得分:0)

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