我有一个名为Update Account的虚方法,根据从find方法找到的指针返回main,帐户将相应更新。
有一个名为Account的父类,其中Savings派生自。
但是,节省的费用不会产生更新的利息,也不会使利息生效。
所有帐户都有余额,存款不会在帐户之间发生变化,这就是我调用帐户存款方式的原因
void Savings::UpdateAccount(Date *date)
{
int interestMonths;
short lastYear;
short lastMonth;
float currBal;
//THESE GET THE CURRENT DATE - Differs from the account creation
//date and allows for the calculation of interest
lastMonth = GetAccountMonth();
lastYear = GetAccountYear();
currBal = GetAccountBal();
if (((date -> GetYear ( ) - lastYear) * 12 +
(date -> GetMonth ( ) - lastMonth )) > 0)
{
interestMonths = ((date -> GetYear ( ) - lastYear) * 12 +
(date -> GetMonth ( ) - lastMonth));
for (int index = 0; index < interestMonths; index++)
{
currBal = currBal + (currBal * interestRate);
}
//This method takes the calculated current balance, then
//passes it into the parent class method to update the
//private accountBal attribute.
SetBalance(currBal);
}
}
问题是这种方法没有更新对象的余额,我相当确定我的利率计算不是问题。
感谢您的帮助 - 此方法现在有效。
答案 0 :(得分:2)
您正在更新 余额,但帐号错误。
void Savings::UpdateAccount(Date *date)const
{
int interestMonths;
short lastYear;
short lastMonth;
float currBal;
Account myAccount;
此处,myAccount
是一个局部变量,与您刚找到的帐户无关(this
)...
myAccount.SetBalance(currBal);
...这是您正在更新的帐户的余额。
你想修改你正在调用函数的对象,所以只需说
SetBalance(currBal);
并从函数中删除const
- 您不能拥有更新帐户但不修改帐户的功能。
您也不需要在Savings
成员的定义中添加“Savings ::” -
lastMonth = GetAccountMonth();
lastYear = GetAccountYear();
currBal = GetAccountBal();
应该可以正常工作。