2012-06-27 2 views
2

Я хочу называть унаследованную функцию суперкласса (родительский класс) в C++.
Как это возможно?Как вызвать функцию из родительского класса?

class Patient{ 
protected: 
    char* name; 
public: 
    void print() const; 
} 
class sickPatient: Patient{ 
    char* diagnose; 
    void print() const; 
} 

void Patient:print() const 
{ 
    cout << name; 
} 

void sickPatient::print() const 
{ 
    inherited ??? // problem 
    cout << diagnose; 
} 
+0

Какие другие классы происходят от пациента? Если ваш ответ отличается от '' only healthyPatient'', ваш дизайн ошибочен. –

ответ

10
void sickPatient::print() const 
{ 
    Patient::print(); 
    cout << diagnose; 
} 

А также в случае, если вы хотите полиморфное поведение, которое вы должны сделать печать virtual в базовом классе:

class Patient 
{ 
    char* name; 
    virtual void print() const; 
} 

В этом случае вы можете написать:

Patient *p = new sickPatient(); 
p->print(); // sickPatient::print() will be called now. 
// In your case (without virtual) it would be Patient::print() 
Смежные вопросы