当对象的一部分时,双重被赋予错误的值

时间:2014-12-05 03:59:09

标签: c++ object vector double

我的代码应该像ATM机一样,它可以创建不同类型的帐户,并跟踪帐户中的所有交易和其他信息

我的问题是存储在BankAccount类中的双重余额存储在向量中以跟上所有不同的帐户,当我尝试检索余额时它给了我“-9.25596e + 061”作为余额,无论我存放或放在那里,或者即使它应该为零。我得到它的唯一一次工作就是当我平衡一个全局变量时,但为了这个程序,它几乎没用。

activeAcounts是一个向量

void BankAccount::deposit(double amount, string name)
{
    balance += amount;
    for (int i = 0; i < activeAccounts.size(); i++)
    {
        if (activeAccounts[i].getName() == name)
        {
             activeAccounts[i].setBalance(balance + amount);
        }
    }

}

询问是仅返回由其名称

指定的帐户的余额
void BankAccount::inquiry(string n)
{
    for (int i = 0; i < activeAccounts.size(); i++)
    {
        if (activeAccounts.at(i).getName() == n)
        {
            cout << "Balance: " << activeAccounts[i].getBalance() << endl;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您很可能不会将balance初始化为0.成员变量需要初始化,与全局变量不同。您应该在balance构造函数中初始化BankAccount

此外,由于您使用的是vector,如果您已为BankAccount编写了复制构造函数和赋值运算符,则需要确保复制balance,否则你的副本将有一个伪造的balance值。

对于全局变量,当您对全局变量进行平衡时,全局变量会自动初始化为0,这可能就是为什么当它变为全局变量时没有问题。