amine89
Mitglied
Hallo leute !
Vlt kann mir jmd von euch helfen !
Mein Problem ist :
ich kann nicht zugreifen auf die Methode Print() der abgeleitete klasse , sonder nur auf die Methode Print() der Basis-klasse ,
wenn ihr das Programm auch ausführt dann sieht ihr auch bei der Ausgabe , dass der Compiler nur die Print()-Methode der
Basis Klasse aufruft.
Ich bedanke mich im Voraus.
Vlt kann mir jmd von euch helfen !
Mein Problem ist :
ich kann nicht zugreifen auf die Methode Print() der abgeleitete klasse , sonder nur auf die Methode Print() der Basis-klasse ,
wenn ihr das Programm auch ausführt dann sieht ihr auch bei der Ausgabe , dass der Compiler nur die Print()-Methode der
Basis Klasse aufruft.
Ich bedanke mich im Voraus.
C++:
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
class Mitarbeiter{
public:
string Name;
short GeburtsJahr;
string Abteilung;
short MitarbeiterID;
Mitarbeiter(){
string Name ="NULL";
short GeburtsJahr=0;
string Abteilung="NULL";
short MitarbeiterID=0;
}
Mitarbeiter(string _Name,short _GeburtsJahr, string _Abteilung, short _MitarbeiterID){
this->Name=_Name;
this->GeburtsJahr= _GeburtsJahr;
this->Abteilung=_Abteilung;
this->MitarbeiterID= _MitarbeiterID;}
void print(){
cout<<"Name:"<<Name<<"\n"<<"GeburtsJahr:"<<GeburtsJahr<<"\n"<<"Abteilung:"<<Abteilung<<"\n"<<"MitarbeiterID:"<<MitarbeiterID<<"\n\n\n"<<endl;
}
virtual double getGehalt(){
};
};
class Angestellter: public Mitarbeiter{
public:
double GrundGehalt;
int UeberStunden;
double VerguetungUeberStunden;
Angestellter(): Mitarbeiter(){
double GrundGehalt=0;
int UeberStunden=0;
double VerguetungUeberStunden=0;
}
Angestellter(string Name, short GebutrsJahr, string Abteilung, short MitarbeiterID,double _GrundGehalt,int _UeberStunden,double _VerguetungUeberStunden): Mitarbeiter(Name,GeburtsJahr,Abteilung,MitarbeiterID){
this->GrundGehalt=_GrundGehalt;
this->UeberStunden=_UeberStunden;
this->VerguetungUeberStunden=_VerguetungUeberStunden;
}
void setGrundGehalt(double G){
this->GrundGehalt=G;
}
void setUeberStunden(double U){
this->UeberStunden=U;
}
void setVerguetungUeberStunden(double V){
this->VerguetungUeberStunden=V;
}
double getGehalt(){
double Gehalt = GrundGehalt+(20*UeberStunden);
cout<<Gehalt<<"\n"<<endl;
return Gehalt;
}
void print(){
cout<<"Name\n"<<Name<<"GeburtsJahr\n"<<GeburtsJahr<<"Abteilung\n"<<Abteilung<<"MitarbeiterID\n"<<MitarbeiterID <<endl;
cout<<"GrundGehalt\n"<<GrundGehalt<<"UeberStunden\n"<<UeberStunden<<"VerguetungUeberStunden\n"<<VerguetungUeberStunden<<endl;
}
};
class Manager : public Mitarbeiter{
public:
double FixGehalt;
double Provision;
double Umsatz;
Manager():Mitarbeiter(){
double FixGehalt=0;
double Provision=0;
double Umsatz=0;
}
Manager(string Name, short GebutrsJahr, string Abteilung, short MitarbeiterID,double _FixGehalt, double _Provision, double _Umsatz): Mitarbeiter( Name,GebutrsJahr,Abteilung,MitarbeiterID){
this->FixGehalt=_FixGehalt;
this->Provision=_Provision;
this->Umsatz=_Umsatz;
}
void setFixGehalt(double F){
this->FixGehalt=F;
}
void setProvision(double P){
this->Provision=P;
}
void setUmsatz(double U){
this->Umsatz=U;
}
double getGehalt(){
double Gehalt = FixGehalt+ ((Provision*Umsatz)/100);
cout<<Gehalt<<endl;
return Gehalt;
}
void print(){
cout<<"Name:"<<Name<<"\n"<<"GeburtsJahr:"<<GeburtsJahr<<"\n"<<"Abteilung\n"<<Abteilung<<"MitarbeiterID\n"<<MitarbeiterID<<endl;
cout<<"FixGehalt\n"<<FixGehalt<<"Provision\n"<<Provision<<"Umsatz\n"<<Umsatz<<endl;
}
};
int main(){
Mitarbeiter *refMitarbeiter;
Angestellter *refHugo;
refMitarbeiter = new Angestellter("Anna",1985,"Verkauf",123,2300.00,24.00,20.00);
refHugo = dynamic_cast<Angestellter *>(refMitarbeiter);
refMitarbeiter->print();
refMitarbeiter->getGehalt();
Manager *refAnna;
refMitarbeiter = new Manager("Hugo",1970,"IT-Manager",456,3400.00,5,18000.00);
refAnna = dynamic_cast<Manager *>(refMitarbeiter);
refMitarbeiter->print();
refMitarbeiter->getGehalt();
return 0;
}