首页 > 解决方案 > 从指针类属性访问对象属性的问题

问题描述

我有以下课程:

class Customer {

private:
    string name;
    savingAccount *savingsAccount = nullptr;
public:
   void setSavingsAccount(savingAccount savingsAccount);
   savingAccount* getSavingsAccount();

和方法:

savingAccount* Customer::getSavingsAccount()
{
    return this->savingsAccount;
}

void Customer::setSavingsAccount(savingAccount savingsAccount)
{
    this->savingsAccount = &savingsAccount;
}

SavingAccount 类是从 account 结构派生的:

struct account {
private:
    double balance;
    double interestRate;
    double interest;
    const string accountType = "Base Account";

public:
    account();
    double getBalance();
    double getIntRate();
    double calculateInterest(int n);
    void setBalance(double balance);
    void setIntRate(double rate);
    string getType();

};

class savingAccount : public account {
public:
    double savingDepositArr[5];
    const string accountType = "Saving Account";

现在的问题是:我正在创建 SavingsAccount 和 Customer 对象。

savingAccount newSavingAccount;
Customer customer;
customer.setSavingsAccount(newSavingAccount);

当我尝试通过 getSavingsAccount 访问任何内容时,我无法访问。

customer.getSavingsAccount.getBalance()
customer.getSavingsAccount().getBalance()

或者

customer.getSavingsAccount.accountType

我 100% 确定我没有以正确的方式使用指针。我一直在寻找解决方案很长时间,但仍然没有。如果我删除指针并将对象作为属性,它可以工作,但这不是我正在寻找的解决方案。我只想知道我做错了什么。

标签: c++pointerspolymorphism

解决方案


getSavingsAccount()返回一个指向储蓄账户的指针。如果您正在使用指向对象的指针,则无法访问属性.(除非您取消引用)。您可以通过简写访问属性(无需取消引用)->

尝试customer.getSavingsAccount()->getBalance()


推荐阅读