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);

理にかなっています。に必要なすべてのデータを提供していますSavingsAccountSavingsAccountこのようなオブジェクトを作成するには、コンストラクターを適切に定義する必要があります。

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

アカウントにはintRateも入れる必要がないので、前の答えは間違っていると思います。そう:

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

サブクラスでは、 base のコンストラクターに渡す場所を定義Savingsする必要があります。bcuAccount

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

のコンストラクターが、基本クラスのコンストラクターに渡すために必要なおよび引数をSavings取るようにします。doubleCustomer*

于 2016-05-21T23:17:46.000 に答える