Как использовать функцию-член из родительского класса с тем же именем (через this->)? - PullRequest
1 голос
/ 17 апреля 2019

Вот суть моей программы:

У меня есть базовый класс с именем Person . У него есть ребенок по имени Президент . Я пытаюсь создать функцию "printInfo" в классе President , которая печатает все свои атрибуты из обоих классов .

Самым простым изменением было просто дифференцировать функции путем изменения имен, но мне было интересно, есть ли способ сделать это, не меняя их.

(приведенный ниже код включает только соответствующие части, я упустил кучу других функций-членов, чтобы их было легче читать)


class Person : public Address {
public:
    void printInfo(); // this prints the name and birthday
private:
    string fname, lname, sex;
    int month, day, year;
};

class President : public Person {
private:
    int term;
public:
    void printInfo(); // this prints term
};

void President::printInfo() {
    cout << term << "  :  ";
    this->printInfo(); //need this to use the person version of itself
};

Что я хочу:

1 : George Washington ....

Фактический результат:

1 : 1 : 1 : ....

1 Ответ

1 голос
/ 17 апреля 2019

Вы можете вызвать функцию-член базового класса, добавив префикс Person::.например,

void President::printInfo() {
    cout << term << "  :  ";
    Person::printInfo();
};

Кстати: лучше сделать printInfo и деструктор Person virtual.

...