标题说我在子类构造函数
中调用基类构造函数时遇到了一些问题基地:
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未定义。 谢谢你的帮助
答案 0 :(得分: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) {}
答案 1 :(得分:0)
在您的子类Savings
中,您需要在某处定义b
和cu
以传递给基础Account
的构造函数,例如:
Savings::Savings(double b, Customer* cu, double intRate) : Account(b, cu) {
interestRate = intRate;
}
使Savings
的构造函数获取传递给基类构造函数所需的double
和Customer*
args。
答案 2 :(得分:0)
我认为之前的答案是错误的,因为在帐户中你也不必同时使用intRate。 所以:
Savings::Savings(double b, Customer* cu, double intRate) : Account(b, cu)
{ interestRate = intRate; }