Hi Leute,
ich bin gerade dabei ein Codefragment aus der Sprache Java nach C++ zu schreiben. Der Java Teil um den es sich dabei handelt sieht wie folgt aus:
Bei diesem Beispiel gibt es eine abstrakte Klasse Tier, sowie die Klassen Vogel und Ente. Dabei ist Vogel eine Unterklasse von Tier, und Ente eine Unterklasse von Vogel.
Die Ausgabe sieht wie folgt aus:
Ente: quakt
Ente: quakt
Ente: quakt
Vogel: zwitschert
Das Problem welches ich nun habe ist folgendes:
Nachdem ich versucht habe den Teil in C++ umzuwandeln kommt dieser Fehler:
Fehler 1 error C2440: 'Typumwandlung': 'Tier' kann nicht in 'Vogel' konvertiert werden ... 73 Tier_Vogel_Ente
Was mache ich da nur Falsch?
Viele Grüße,
Dani
ich bin gerade dabei ein Codefragment aus der Sprache Java nach C++ zu schreiben. Der Java Teil um den es sich dabei handelt sieht wie folgt aus:
Code:
public class index
{
public static void main(String[] args)
{
Tier einTier = new Ente("quakt");
einTier.gibLaut();
Vogel einVogel = (Vogel)einTier;
einVogel.gibLaut();
Ente eineEnte = (Ente)einTier;
eineEnte.gibLaut();
eineEnte.gibLaut2();
}
}
public abstract class Tier {
protected String laut;
public abstract void gibLaut();
}
public class Vogel extends Tier {
protected String laut = "zwitschert";
public Vogel() { }
public Vogel(String laut) {
this.laut = laut;
}
public void gibLaut() {
System.out.println("Vogel: " + laut);
}
}
public class Ente extends Vogel {
protected String laut = "zwitschert nicht";
public Ente(String laut) {
this.laut = laut;
}
public void gibLaut() {
System.out.println("Ente: " + laut);
}
public void gibLaut2() {
super.gibLaut();
}
}
Bei diesem Beispiel gibt es eine abstrakte Klasse Tier, sowie die Klassen Vogel und Ente. Dabei ist Vogel eine Unterklasse von Tier, und Ente eine Unterklasse von Vogel.
Die Ausgabe sieht wie folgt aus:
Ente: quakt
Ente: quakt
Ente: quakt
Vogel: zwitschert
Das Problem welches ich nun habe ist folgendes:
Nachdem ich versucht habe den Teil in C++ umzuwandeln kommt dieser Fehler:
Fehler 1 error C2440: 'Typumwandlung': 'Tier' kann nicht in 'Vogel' konvertiert werden ... 73 Tier_Vogel_Ente
Code:
class Tier
{
protected:
string laut;
public:
virtual void gibLaut(void) = 0;
};
class Vogel : public Tier
{
protected:
string laut;
public:
Vogel()
{}
Vogel(string laut)
{
this->laut = laut;
}
virtual void gibLaut(void)
{
cout << "Vogel: " << laut.c_str() << "\n";
}
};
class Ente : public Vogel
{
protected:
string laut;
public:
Ente()
{}
Ente(string laut)
{
this->laut = laut;
}
void gibLaut(void)
{
cout << "Ente: " << laut.c_str() << "\n";
}
void gibLaut2(void)
{
Vogel::gibLaut();
}
};
void main()
{
int buffer;
Tier *einTier;
einTier = new Ente("quakt");
einTier->gibLaut();
Vogel *einVogel;
einVogel = (Vogel)*einTier;
einVogel->gibLaut();
cin >> buffer;
}
Was mache ich da nur Falsch?
Viele Grüße,
Dani