【发布时间】:2013-11-12 04:55:16
【问题描述】:
我有一个基类 BankAccount,然后是 3 个派生类:SavingsAccount、CheckingAccount 和 AchieverAccount(也继承检查)。唯一的 get_ 函数位于 public 基类中。当我从 3 个派生类调用它时,它返回 0,我认为这是基类的构造函数正在做的事情。我使用 this->balance(); 创建了 getBalance 函数;作为一个测试,看看它是否会返回余额,没有运气,我把它当作只是返回余额;之前。我试图将平衡公之于众,即使这不是一个好主意而且仍然一无所获。所以肯定是 SavingsAccount 没有正确继承它,或者 getBalance 没有得到正确的余额,我需要帮助。
我不会包含所有的代码,因为结果会很多,但我会把它放在我认为重要的地方,如果你愿意,我可以把它全部放进去。这仅适用于 SavingsAccount,因为我认为如果我得到这方面的帮助,我可以在其他地方解决。
所有这些都有#include 和 using namespace std;
BankAccount.h
class BankAccount{
public:
BankAccount();
BankAccount(double amount);
double getBalance();
};
private:
double balance;
BankAccount.cpp
#include "BankAccount.h"
BankAccount::BankAccount(){
balance = 0;
}
BankAccount::BankAccount(double amount){
balance = amount;
}
double BankAccount::getBalance(){
return this->balance;
}
SavingsAccount.h
#include "BankAccount.h"
class SavingsAccount: virtual public BankAccount{
public:
SavingsAccount();
SavingsAccount(double amount);
private:
double balance;
};
SavingsAccount.cpp
#include "SavingsAccount.h"
SavingsAccount::SavingsAccount(){
balance = 0.00;
}
SavingsAccount::SavingsAccount(double amount){
balance = amount;
interest = .09;
}
Main.cpp
#include "SavingsAccount.h"
#include "BankAccount.h"
void main(){
cout << "Creating new SavingsAccount with $2000.00" << endl;
SavingsAccount sa(2000.00);
cout << "Current balance: $" << sa.getBalance() << endl;
}
输出
用 $2000.00 创建新的 SavingsAccount 当前余额:0.00 美元
按任意键继续。 . .
【问题讨论】:
-
可能这不是您的全部代码,因为您使用
balance作为BankAccount中的成员变量,但它不在您显示的类定义中。为什么你实际上从BankAccount继承,为什么SavingsAccount中有另一个balance成员? -
我相信我想通了。我使基类成员受保护,并删除了余额的 SavingsAccount 初始化,它似乎可以工作。
-
没关系。
标签: c++ visual-c++ inheritance