Hallo zusammen,
die STL biete ja einige Container an, in den man aber nur jeweils einen bestimmten Typ speicher kann. Ich brauche aber eine Möglichkeit verschiedene Objekte von Klassen zu speichern, die von einer Klasse abgeleitet sind z.B. :
In einen Vector will ich nun Manager oder Abteilungsleiter speichern, jedoch nimmt der Vector Mitarbeiter auf, also die Basisklasse somit gehen die Methoden/Variablen der abgeleiteten Klassen verloren ?!
Hat einer mal einen Vorschlag, wie man sowas lösen könnte ?
THX
die STL biete ja einige Container an, in den man aber nur jeweils einen bestimmten Typ speicher kann. Ich brauche aber eine Möglichkeit verschiedene Objekte von Klassen zu speichern, die von einer Klasse abgeleitet sind z.B. :
Code:
#include <iostream>
#include <vector>
using namespace std;
class Mitarbeiter
{
public:
Mitarbeiter( char *name, int ID)
:name(name),
id(ID)
{}
int getID(void)
{
return id;
}
char *getName(void)
{
return name;
}
private:
char *name;
int id;
};
class Manager : public Mitarbeiter
{
public:
Manager(int gehalt, char *name, int ID)
:Mitarbeiter(name,ID),
gehalt(gehalt)
{}
int getGehalt(void)
{
return gehalt;
}
private:
int gehalt;
};
class Abteilungsleiter : public Mitarbeiter
{
public:
Abteilungsleiter(int gehalt, char *name, int ID, char *abteilung)
:Mitarbeiter(name,ID),
abteilung(abteilung),
gehalt(gehalt)
{}
char *getAbteilung(void)
{
return abteilung;
}
int getGehalt(void)
{
return gehalt;
}
private:
char *abteilung;
int gehalt;
};
typedef vector<Mitarbeiter> firmen_db;
int main(void)
{
firmen_db musterFirma;
Manager klaus(2000,"Klaus Mustermann",1);
Abteilungsleiter manny(1000,"Manny Mustermann",2,"Verkauf");
cout<<klaus.getName( )<<" "<<klaus.getID( )<<" "<<klaus.getGehalt( )<<endl;
cout<<manny.getName( )<<" "<<manny.getID( )<<" "<<manny.getGehalt( )<<manny.getAbteilung( )<<endl;
musterFirma.push_back(klaus);
musterFirma.push_back(manny);
//Manager &test = dynamic_cast<Manager&>(musterFirma.at(0));
return 0;
}
In einen Vector will ich nun Manager oder Abteilungsleiter speichern, jedoch nimmt der Vector Mitarbeiter auf, also die Basisklasse somit gehen die Methoden/Variablen der abgeleiteten Klassen verloren ?!
Hat einer mal einen Vorschlag, wie man sowas lösen könnte ?
THX