Hallo,
- ich habe eine C++ Klasse im Namensraum (namespace) "qvc".
- ich habe eine gleich lautende Klasse QChar, die aber im Framework Qt5 untergebracht ist.
- die Qt5 QChar Klasse spreche per ::QChar an :
- die Klasse: qvc::QChar * foo = new qvc::QChar();
wird ohne Fehler erzeugt.
- im constructor von qvc::QChar erstelle ich eine Referenz zur Qt5 QChar Klasse:
mittels:
qvc::QChar() { origin_obj = new ::QChar(); }
- alles wird ohne Fehler oder Probleme erledigt.
- wenn ich jedoch dann im destructor das Objekt "origin_obj" löschen möchte, prüfe
ich vorher, das der Wert nicht einen nullpointer entspricht.
- wie zu erwarten ist, wird diese Auswertung mit True zurück geliefert und "delete"
versucht "origin_obj" zu löschen.
- aber genau hier bekomme ich einen Fehler, der aber nicht abgehandelt wird.
- ich habe versucht das ganze per try catch abzufangen, aber da passiert rein gar nichts.
- die std::wcout << L"...
wird nicht ausgegeben.
- wie kann man dann Speicherfehler abfangen, die in einer
DLL passieren ?
- geht das nicht mit
exception's ?
- wo liegt mein Fehler ?
Code:
namespace "qvc" {
class QChar {
private:
::QChar* origin_obj;
public:
QChar();
~QChar();
...
};
qvc::QChar::~QChar(void)
{
#ifdef DEBUG
std::wcout << L"cpp: QChar: dtor..." << std::endl;
#endif
try {
if (nullptr != origin_obj) {
std::wcout << L"not null" << std::endl;
delete origin_obj;
}
}
catch (std::
exception &e) {
std::wcout << L"
Exception: ";
std::wcout << e.what() << std::endl;
}
}
}