好吧,我正在尝试在我的编程书中练习,而且我很难准确掌握它想要的内容。
我的“enterAccountData()”函数假设要求用户提供一个帐号和余额,两者都不能为负数且帐号不能小于1000
第二个是我坚持使用“computeInterest()”的函数。假设函数接受一个整数参数,该参数表示帐户将获得利息的年数。然后,该功能显示上一个功能的帐号,并根据附加到BankAccount类的利率显示每年年底的结余余额。 (“BankAccount”的利率必须是一个恒定的静态字段,设置为3%(0.03))。
所以我的问题是:当我的调试器不允许我将字段保持为常量时,如何设置“computeInterest()”也允许它使用常量静态字段计算兴趣?我现在并没有试图阻止任何随机错误的发生,只是试图得到这本书正是要求的内容。这是我的代码。
#include <iostream>
#include <iomanip>
using namespace std;
class BankAccount
{
private:
int accountNum;
double accountBal;
static double annualIntRate;
public:
void enterAccountData(int, double);
void computeInterest();
void displayAccount();
};
//implementation section:
double BankAccount::annualIntRate = 0.03;
void BankAccount::enterAccountData(int number, double balance)
{
cout << setprecision(2) << fixed;
accountNum = number;
accountBal = balance;
cout << "Enter the account number " << endl;
cin >> number;
while(number < 0 || number < 999)
{
cout << "Account numbers cannot be negative or less than 1000 " <<
"Enter a new account number: " << endl;
cin >> number;
}
cout << "Enter the account balance " << endl;
cin >> balance;
while(balance < 0)
{
cout << "Account balances cannot be negative. " <<
"Enter a new account balance: " << endl;
cin >> balance;
}
return;
}
void BankAccount::computeInterest()
{
const int MONTHS_IN_YEAR = 12;
int months;
double rate = 0;
int counter = 0;
BankAccount::annualIntRate = rate;
cout << "How many months will the account be held for? ";
cin >> months;
counter = 0;
do
{
balance = accountBal * rate + accountBal;
counter++;
}while(months < counter);
cout << "Balance is:$" << accountBal << endl;
}
int main()
{
const int QUIT = 0;
const int MAX_ACCOUNTS = 10;
int counter;
int input;
int number = 0;
double balance = 0;
BankAccount accounts[MAX_ACCOUNTS];
//BankAccount display;
counter = 0;
do
{
accounts[counter].enterAccountData(number, balance);
cout << " Enter " << QUIT << " to stop, or press 1 to proceed.";
cin >> input;
counter++;
}while(input != QUIT && counter != 10);
accounts[counter].computeInterest();
system("pause");
return 0;
}
答案 0 :(得分:2)
常量字段很容易:
class BankAccount
{
...
const static double annualIntRate = 0.03;
...
}
(你的调试器是否抱怨过?我正在使用gcc 4.2.1)但是代码中还有其他令人不安的问题,比如computeInterest
尝试将rate
设置为零的方式,以及while
循环...需要工作。
修改:
一个好的原则值得一百个特定的修正。当你开发一个复杂的功能时,不要试图一次完成所有操作;从一个简单的部分开始,让它完美地工作,然后建立起来。实例,computeInterest
。你有几个独立的部分可以工作:通过while
循环正确的次数,计算利息增量,跟踪余额 - 现在computeInterest
没有正确地做这些。一次一个地处理它们,或者如果你想要并行处理它们,但是从不组合那些不起作用的部分。
答案 1 :(得分:1)
static double annualIntRate =.03;
在您的代码的“私人”部分。
然后你可以使用annualIntRate
,就像它是一个全局的(对于每个类的实例)变量。