2016-04-12 66 views
0

所以現在我必須根據「員工」屬於哪個類別來調用特定的打印功能。如何組合父子類的功能?

在 「Employees.cpp」 我的父類打印功能:

​​

和子類打印functpion的一個例子是我的 「Chef.cpp」 打印功能:

void Chef::printChef() const{ 
     cout<<"Name: "<<employeeName<<endl; 
     cout<<"Salary: $"<<calculateSalary()<<endl; 
     cout<<"Employee ID: "<<employeeID<<endl; 
     cout<<"Employee Class: "<<employeeClass<<endl; 
     cout<<"Share Perecent: "<<chefSharePercent<<"%"<<endl; 
     cout<<"Chef's Specialty: "<<chefSpecialty<<endl<<endl; 
} 

的「Chef.cpp」的功能在「Chef.h」中定義,如下所示:

#ifndef CHEF_H_ 
#define CHEF_H_ 
#include <string> 
#include "employee.h" 
using namespace std; 

class Chef : public Employees{ 
    public: 
     Chef(); 
     Chef(double percent, string specailty); 
     void setPercent(double percent); 
     void setSpecialty(string specailty); 
     double getPerecent() const; 
     string getSpecialty() const; 
     double calculateSalary() const; 
     void printChef() const; 
    private: 
     double chefSharePercent; 
     string chefSpecialty; 
}; 
#endif 

有什麼辦法可以只需一個打印功能即可打印每個班級的相應成員。例如,我的廚師兒童班具有與父母「員工」相同的屬性,但另外還有「份額百分比」和「廚師專長」成員。我還有另外兩個具有特定類別成員的子類。

謝謝。

+0

的可能的複製[虛擬函數繼承](http://stackoverflow.com/questions/17842594/virtual-function-inheritance)。稱這是一個愚蠢的舉動,但是這是你想要做的事情,沒有必要再重複一遍。 – user4581301

+0

更多有用的信息在這裏:https://isocpp.org/wiki/faq/virtual-functions – user4581301

+0

打印不應該是一個成員函數。 – Thomas

回答

0

您應該瞭解虛擬方法。和純虛擬方法。看看這個,讓我知道這是否有幫助! http://www.thegeekstuff.com/2013/06/cpp-virtual-functions/ http://www.cplusplus.com/doc/tutorial/polymorphism/

+0

這不是一個真正的答案,最好留下來作爲對問題的評論。 – callyalater

+0

完美,這正是我一直在尋找的!謝謝,它工作很棒! – KBro

+0

我同意@callyalater的評論。您應該通過包含專門解決OP問題的代碼來擴展該帖子。 –