Hi Leute!
Ich möchte mir einen sicheren Zeiger implementieren, eigentlich hab ichs sogar gemacht.
Es gibt jedoch ein Problem:
Code
template<typename type> inline type& jpointer<type>::operator*() const
{
if(ptr)
return *ptr;
throw domain_error("Tried to call jpointer::operator*(), but the pointer is NULL");
}
Wenn ich jetzt *p mit einem ungebundenen Zeiger aufrufe, wird wunderbar ein domain_error ausgelöst, den ich auch Auffangen kann:
Code
catch(domain_error e)
{
cerr << e.what() << endl;
cerr << "bla"; // das letzte was ich vom Programm höre
cout << "blabla"; // vielleicht übersetzt er "blabla" in "Speicherzugriffsfehler", aber warum er dann noch terminate aufruft???
}
Sobald ich eine andere Anweisung als cerr oder throw in den Catch-Block einfüge, bricht das Programm ab: "Speicherzugriffsfehler", auch wenn im Catch-Block nur ein cerr steht, bricht das Programm am Ende des Catch-Blocks ab.
Was kann ich da falsch machen?
Danke für jede Hilfe...
The User