Rofi
Erfahrenes Mitglied
Hallo,
bin C++ anhand einer DVD von Monika Hödl (video2brain) am lernen. Ich
benutze Microsoft Visual C++.net.
Bei dem fehlerhaften Programmm wird das Dos-Fenster noch kurz geöffnet, dann kommt besagte Fehlermeldung
"Unbehandelte Ausnahme..." Bei der Ausführung in Einzelschritten fand ich
heraus, dass der Fehler sich ab Zeile 52 bemerkbar macht.
Kann mir jemand sagen, was falsch ist?
#include <iostream>
#include <string>
using namespace std;
class Tier{
public:
Tier();
//Tier-Kopierkonstruktor
Tier (const Tier &);
//virtuelle Clone-Methode
virtual Tier * Clone() const {
cout << "Aufruf der Clone-Methode des Tieres" << endl;
return new Tier(*this);
}
};
class Hund : public Tier{
public:
string getName() const{ return *name; }
void setName(string n){ *name = n; }
string* name;
Hund();
//Hund-Kopierkonstruktor
Hund (const Hund &);
//virtuelle Clone-Methode von Hund, die diejenige von Tier überschreibt
Hund * Clone() const {
cout << "Aufruf der Clone-Methode des Hundes" << endl;
return new Hund(*this);
}
};
Tier::Tier(){}
Tier::Tier(const Tier &altes_tier){
cout << "Aufruf des Kopierkonstruktors des Tieres" << endl;
}
Hund::Hund(){
setName("kein Name vorhanden");
}
Hund::Hund(const Hund &alter_hund){
cout << "Aufruf des Kopierkonstruktors des Hundes" << endl;
name = new string;
setName(alter_hund.getName());
}
int main(){
cout << "Hasso soll geklont werden" << endl;
Tier *hasso = new Hund;
Tier *fifi = hasso->Clone();
delete hasso;
delete fifi;
cin.get();
return 0;
}
//Danke
bin C++ anhand einer DVD von Monika Hödl (video2brain) am lernen. Ich
benutze Microsoft Visual C++.net.
Bei dem fehlerhaften Programmm wird das Dos-Fenster noch kurz geöffnet, dann kommt besagte Fehlermeldung
"Unbehandelte Ausnahme..." Bei der Ausführung in Einzelschritten fand ich
heraus, dass der Fehler sich ab Zeile 52 bemerkbar macht.
Kann mir jemand sagen, was falsch ist?
#include <iostream>
#include <string>
using namespace std;
class Tier{
public:
Tier();
//Tier-Kopierkonstruktor
Tier (const Tier &);
//virtuelle Clone-Methode
virtual Tier * Clone() const {
cout << "Aufruf der Clone-Methode des Tieres" << endl;
return new Tier(*this);
}
};
class Hund : public Tier{
public:
string getName() const{ return *name; }
void setName(string n){ *name = n; }
string* name;
Hund();
//Hund-Kopierkonstruktor
Hund (const Hund &);
//virtuelle Clone-Methode von Hund, die diejenige von Tier überschreibt
Hund * Clone() const {
cout << "Aufruf der Clone-Methode des Hundes" << endl;
return new Hund(*this);
}
};
Tier::Tier(){}
Tier::Tier(const Tier &altes_tier){
cout << "Aufruf des Kopierkonstruktors des Tieres" << endl;
}
Hund::Hund(){
setName("kein Name vorhanden");
}
Hund::Hund(const Hund &alter_hund){
cout << "Aufruf des Kopierkonstruktors des Hundes" << endl;
name = new string;
setName(alter_hund.getName());
}
int main(){
cout << "Hasso soll geklont werden" << endl;
Tier *hasso = new Hund;
Tier *fifi = hasso->Clone();
delete hasso;
delete fifi;
cin.get();
return 0;
}
//Danke