2016-04-12 6 views
0

Jetzt muss ich eine bestimmte Druckfunktion aufrufen, basierend darauf, zu welcher Klasse der "Mitarbeiter" gehört.Wie Funktionen einer Eltern-Kind-Klasse zu kombinieren?

Meine Eltern-Klasse Druckfunktion in "Employees.cpp":

void Employees::printEmployee() const{ 
     cout<<"Name: "<<employeeName<<endl; 
     cout<<"Salary:"<<employeeSalary<<endl; 
     cout<<"Employee ID: "<<employeeID<<endl; 
     cout<<"Employee Class: "<<employeeClass<<endl<<endl; 
} 

und ein Beispiel für ein Kind Klasse Druck functpion ist meine "Chef.cpp" Druckfunktion:

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; 
} 

Der Funktionen von „Chef.cpp“ in „Chef.h“ definiertem, die wie so aussehen: eine Möglichkeit, gibt es

#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 

haben nur eine Druckfunktion, die die entsprechenden Mitglieder jeder Klasse druckt. Zum Beispiel hat Meine Chef-Kind-Klasse alle die gleichen Attribute wie die Eltern "Mitarbeiter", hat aber zusätzlich ein "Share Percent" und "Chef Specialty" -Mitglied. Ich habe 2 weitere Kinderklassen mit klassenspezifischen Mitgliedern.

Danke.

+0

Mögliche Duplikat [Virtuelle Funktion Vererbung] (http://stackoverflow.com/questions/17842594/virtual-function-inheritance). Wenn man das als Täter bezeichnet, dehnt man die Dinge ein wenig aus, aber das ist es, was man tun möchte, und es gibt keinen Grund, das noch einmal durchzugehen. – user4581301

+0

Weitere nützliche Informationen hier: https://isocpp.org/wiki/faq/virtual-functions – user4581301

+0

Drucken sollte kein Mitglied Funktionen sein. – Thomas

Antwort

0

Sie sollten etwas über virtuelle Methoden lernen. Und reine virtuelle Methoden. Werfen Sie einen Blick darauf und lassen Sie mich wissen, ob das hilft! http://www.thegeekstuff.com/2013/06/cpp-virtual-functions/ http://www.cplusplus.com/doc/tutorial/polymorphism/

+0

Dies ist nicht wirklich eine Antwort, dies wäre besser als Kommentar zu der Frage übrig. – callyalater

+0

Perfekt, genau das habe ich gesucht! Danke, es funktioniert super! – KBro

+0

Ich stimme dem Kommentar von @callyalater zu. Sie sollten den Beitrag erweitern, indem Sie Code einfügen, der speziell das Problem des OP löst. –

Verwandte Themen