Hallo zusammen.
Ich bräuchte eure Hilfe, da ich irgendwie aufn Schlauch stehe.
Und zwar geht’s um Vererbung und das typische
....................-----> PKW
Fahrzeug -|
....................-----> LKW
Beispiel.
Dazu habe ich folgende Klassen:
class Fahrzeug
class PKW
class LKW
meine Main wo ich versuche von einer Klasse in die andere zu wandeln
Mein Problem besteht darin, das ich es nicht schaffe aus einen PKW ein LKW zu machen (da er wie ich denke den Speicher für die Sitzplätze nicht reserviert hat).
Ich bin da ein wenig verwirrt.
Ich habe ja nur Daten vom Typ Fahrzeug… was mich zu einer weiteren Frage bringt.
Wie komme ich an die Funktion „void anzSitzplaetze(int neue_sitzplaetze)“ wenn ich doch ein Fahrzeug habe?
Des Weitereren: brauche ich die Destruktoren?
Das sind gleich 3 Wünsche auf einmal, also sag ich schon mal:
Vielen Dank für die Mühe sich das überhaupt an zu schauen
MFG Marco
Ich bräuchte eure Hilfe, da ich irgendwie aufn Schlauch stehe.
Und zwar geht’s um Vererbung und das typische
....................-----> PKW
Fahrzeug -|
....................-----> LKW
Beispiel.
Dazu habe ich folgende Klassen:
class Fahrzeug
Code:
#define MAXZEICHEN 25
#include <iostream>
using namespace std;
class Fahrzeug
{
protected:
char name[MAXZEICHEN];
public:
// Konstruktor
Fahrzeug(const char* neuer_name)
{
sprintf_s(name, MAXZEICHEN, neuer_name);
};
// Destruktor
//~Medium() { };
// Ein/Ausgabe
virtual void ausgabe() = 0;
//virtual void anzSitzplaetze(int neue_sitzplaetze) = 0;
virtual void neuerName(const char* neuer_name) = 0;
};
class PKW
Code:
#include <iostream>
using namespace std;
class PKW : public Fahrzeug
{
private:
int sitzplaetze;
public:
// Konstruktor
PKW(const char* neuer_name, int neue_sitzplaetze)
: Fahrzeug(const char* neuer_name)
{
sitzplaetze = neue_sitzplaetze;
};
// Destruktor
//~PKW();
// Ein/Ausgabe
void ausgabe()
{
cout<<"PKW:"<<endl;
cout<<"Name: "<<name<<endl;
cout<<"Sitze: "<<sitzplaetze<<endl;
};
void anzSitzplaetze(int neue_sitzplaetze)
{
sitzplaetze = neue_sitzplaetze;
};
void neuerName(const char* neuer_name);
{
sprintf_s(name, MAXZEICHEN, neuer_name);
};
};
class LKW
Code:
#include <iostream>
using namespace std;
class LKW : public Fahrzeug
{
private:
public:
// Konstruktor
LKW(const char* neuer_name) : Fahrzeug(const char* neuer_name) {};
// Destruktor
//~LKW();
// Ein/Ausgabe
void ausgabe()
{
cout<<"LKW:"<<endl;
cout<<"Name: "<<name<<endl;
};
void neuerName(const char* neuer_name);
{
sprintf_s(name, MAXZEICHEN, neuer_name);
};
};
meine Main wo ich versuche von einer Klasse in die andere zu wandeln
Code:
Fahzeug* fz[3];
PKW* pkw1;
LKW* lkw1;
fz[0] = new pkw1("Fiat", 5);
fz[1] = new lkw1("MAN");
cout<<"Dynamic-Cast Anwenden"<<endl;
pkw1 = dynamic_cast<PKW*>(fz[0]); // OK
pkw1->ausgabe();
cout<<endl<<endl;
fz[2] = dynamic_cast<Fahzeug*>(fz[0]); // OK
fz[2]->ausgabe();
cout<<endl<<endl;
lkw1 = dynamic_cast<LKW*>(fz[0]); // Geht nicht
lkw1->ausgabe();
cout<<endl<<endl;
Mein Problem besteht darin, das ich es nicht schaffe aus einen PKW ein LKW zu machen (da er wie ich denke den Speicher für die Sitzplätze nicht reserviert hat).
Ich bin da ein wenig verwirrt.
Ich habe ja nur Daten vom Typ Fahrzeug… was mich zu einer weiteren Frage bringt.
Wie komme ich an die Funktion „void anzSitzplaetze(int neue_sitzplaetze)“ wenn ich doch ein Fahrzeug habe?
Des Weitereren: brauche ich die Destruktoren?
Das sind gleich 3 Wünsche auf einmal, also sag ich schon mal:
Vielen Dank für die Mühe sich das überhaupt an zu schauen

MFG Marco
Zuletzt bearbeitet: