将 base class 2 参数构造函数调用为 subclass 1 参数构造函数

Invoking base class 2 argument constructor into subclass one argument constructor

正如标题所说,我在子class构造函数

中调用基础class构造函数时遇到了一些问题

基地:

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

子class:

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

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

在你的 subclass Savings 你需要在某处定义 bcu 以传递给基础 Account 的构造函数,例如:

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

这样 Savings 的构造函数采用 doubleCustomer* 参数传递给基础 class.

的构造函数

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

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

想一想如何创建 SavingsAccount

你能用

创建一个吗
SavingsAccount ac1(0.01);

如果你这样做了,那么该对象的余额是多少?谁将成为该对象的 Customer

创建 SavingsAccount 时,您需要提供余额以及 Customer。类似于:

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) {}