我无法解释为什么我收到这个逻辑错误!看看:
这是在标题中 -
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
我在这里做错了什么?我似乎无法弄明白。提前谢谢!
答案 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,这可以验证。