0

正如标题所说,我在子类构造函数中调用基类构造函数时遇到了一些问题

根据:

account.h
    Account(double, Customer*)
account.cpp
    Account::Account(double b, Customer *cu)
    {
    balance = b;
    cust = *cu;
    }

子类:

savings.h
    Savings(double);
savings.cpp
    Savings::Savings(double intRate) : Account(b, cu)
    {
    interestRate = intRate;
    }

我得到的错误是 b 和 cu 未定义。感谢帮助

4

3 回答 3

1

想想你如何创建一个SavingsAccount.

你可以创建一个使用

SavingsAccount ac1(0.01);

如果你这样做了,那个物体上的平衡是多少?谁将成为Customer那个对象。

您需要提供余额以及Customer创建SavingsAccount. 就像是:

Customer* cu = new Customer; // Or get the customer based on some other data
SavingsAccount ac1(100.0, cu, 0.01);

说得通。您正在提供SavingsAccount. 要创建这样的对象,您需要SavingsAccount适当地定义构造函数。

Savings::Savings(double b, Customer *cu, double intRate);

这可以通过以下方式正确实施:

Savings::Savings(double b,
                 Customer *cu,
                 double intRate) : Account(b, cu), interestRate(intRate) {}
于 2016-05-21T23:38:17.517 回答
0

在您的子类Savings中,您需要定义bcu在某处传递给 base 的构造函数Account,例如:

Savings::Savings(double b, Customer* cu, double intRate) : Account(b, cu) {
    interestRate = intRate;
}

这样的构造函数需要传递给基类的构造函数Savings所需的double和args。Customer*

于 2016-05-21T23:17:46.000 回答
0

我认为前面的答案是错误的,因为在 Account 中您不必也输入 intRate。所以:

Savings::Savings(double b, Customer* cu, double intRate) : Account(b, cu)
{ interestRate = intRate; }
于 2016-05-21T23:25:48.743 回答