Сеттеры и геттеры разных классов? CPP - PullRequest
0 голосов
/ 02 мая 2020

У меня возникают некоторые проблемы с домашней работой, когда я пытаюсь понять, как я могу использовать функцию сеттера из своего базового класса в производном классе. Я не уверен, правильно ли я сформулировал это, поскольку я новичок в C ++, но, надеюсь, мой код сможет объяснить это лучше!

class account{
private:
    double balance;

protected:
    int numwithdraws = 0;

public:
    void Setbalance(int bal)
    {
        balance = bal + balance;
    }
    int Getbalance()
    {
        return balance;
    }
};

class checking : public account {
public:
    WriteCheck(int checknum,double amount)
    {
        cout<<"Check amount?"<<endl;
        cin>>amount;
        Setbalance(amount);
        checknum++;
    }
};

Внутри моей основной функции есть возможность сделать вывод, обычно это будет означать, что мой баланс уменьшится на go, поэтому мне придется выяснить, как сделать это отрицательным в моем балансе позже, но

    checking obj2;
    obj2.WriteCheck(0,0);
    cout<<"New Balance = "<<obj1.Getbalance()<<endl;

Я много вынул свой код, чтобы сузить суть проблемы Дело в том, но я попытаюсь объяснить это лучше словами, если то, что я записал для своего кода, сбивает с толку.

В моем аккаунте базового класса есть Setbalance и Getbalance . В моем производном классе проверка я пытаюсь использовать функцию Setbalance , которая находится в моем базовом классе, в моей функции производного класса WriteCheck , чтобы изменить количество моего личного переменная balance , которая находится в базовом классе моего аккаунта.

Проблема в том, что когда я использую Setbalance в своей функции производного класса и вызываю свой Getbalance в main, он все равно заканчивается 0 и не ' Я не могу изменить сумму в переменном балансе.

Я запутался, читая собственное объяснение, поэтому я понимаю, трудно ли asp услышать то, что я пытаюсь спросить. Если это так, пожалуйста, дайте мне знать, чтобы я мог попытаться объяснить дальше!

1 Ответ

1 голос
/ 02 мая 2020

Вы на правильном пути к тому, чего пытаетесь достичь (вызывая функцию в базовом классе из производного класса). Производный класс, как правило, будет иметь функции, которые есть у базового класса, поэтому вызов

checking obj2;
obj2.Getbalance()

вполне подходит. Я сделал некоторые синтаксические изменения в вашем коде, чтобы он мог работать. Единственное существенное изменение, которое я сделал, было установлено balance в 0, чтобы не было никакого неопределенного поведения.

#include <iostream>
using namespace std;


class account {

private:
    double balance = 0;

protected:
    int numwithdraws = 0;

public:
    void Setbalance(int bal)
    {
        balance = bal + balance;
    }
    int Getbalance()
    {
        return balance;
    }
};

class checking : public account
{
public:

    void WriteCheck(int checknum, double amount)
    {
        cout << "Check amount?" << endl;
        cin >> amount;
        Setbalance(amount);
        checknum++;
    }
};

int main()
{
    checking obj2;
    cout << "New Balance = " << obj2.Getbalance() << endl;
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...