0

我正在做一个在 C++ 中刺激 ATM 并且累加器有一些问题的项目,我的问题是:我正在使用 switch(这里是案例 1)来更改在包含 switch 的函数中声明的 2 个变量的值( ),但是值仅在案例 1 内部发生变化,并且它们将自身重置为原始值(如 const 声明),因此当我尝试打印检查和保存(在案例 3 和 4 中)时,它会打印出原始金额(1000) . 所以我不知道我在这里做错了什么。问题不在于金额,我尝试用数值替换金额,但仍然不起作用。请帮忙

int transactions()
{   
    double checking = 1000.00, saving = 1000.00;
    double amount;
    switch (inputRange(menu()))
    {
    case 1: system("cls");
            amount = getAmount("Enter an amount to transfer from checking to saving: ");
            checking -= amount; 
            saving += amount;
            cout << checking << " " << saving; // they only change inside case 1
            cout << "\nTransaction completed! \n\nPress ENTER to return to main menu...";
            cin.ignore(99,'\n');
            break;

更新***我已经知道了伙计们,谢谢,只是忘记了&,这行得通

   int transactions(double &checkBal, double &saveBal)
{       
    double amount;

    //set precision
    cout << fixed << showpoint << setprecision(2);

    switch (inputRange(menu()))
    {
    case 1: system("cls");
            checkingToSaving (getAmount("Enter an amount to transfer from checking to saving: "), checkBal, saveBal);
            cout << "\nTransaction completed! \n\nPress ENTER to return to main menu...";
            cin.ignore(99,'\n');
            break;
4

3 回答 3

1

问题是,checking并且saving仅在对transactions().

它们在transactions()被调用、被初始化、你的代码改变它们时就出现了,它们在transactions()返回的那一刻消失了。当再次调用该函数时,整个循环重复。

这两个变量需要存在于函数之外(可能作为某个类的数据成员)。

于 2013-01-26T08:28:34.750 回答
1

声明一个“客户”类,(包括姓名、地址、储蓄、支票等成员)。在“事务”之外创建实例并将实例作为参数传入。

那,或数据库。

于 2013-01-26T08:33:04.363 回答
-1

您当前问题的粗略答案是使用静态变量:

int transactions()
{   
    static double checking = 1000.00;
    static double saving = 1000.00;
    .
    .

这种方法只给你一个检查和保存的实例。如果您想扩展您的程序以拥有多个帐户,您应该考虑使用类实例来保存数据:

class Account{
    double checking;
    double saving;
public:
    int transactions();
};
于 2013-01-26T09:02:40.407 回答