Vererbung will nicht wie ich :(
-
Ich habe mir eine kleine ErrorKlasse geschrieben.
class HauptErrorKlasse { protected: unsigned long Fehlernummer; public: unsigned long GetErrorNumber(){return this->Fehlernummer;}; }; class GetLastErrorKlasse : public HauptErrorKlasse { GetLastErrorKlasse(){this->Fehlernummer=GetLastError();}; };Versuche ich nun mit
throw GetLastErrorKlasse();einen Fehler zu werfen, bemängelt der Compiler ich hätte keinen Zugriff auf die Variable Fehlernummer.
error C2248: "GetLastErrorKlasse::GetLastErrorKlasse": Kein Zugriff auf private Member, dessen Deklaration in der GetLastErrorKlasse-Klasse erfolgte.
Wo liegt mein Fehler?
-
class GetLastErrorKlasse : public HauptErrorKlasse { GetLastErrorKlasse(){this->Fehlernummer=GetLastError();}; };wenn du so was ordentlich schreiben würdest, würdest du es sehen:
class GetLastErrorKlasse : public HauptErrorKlasse { public: //!! GetLastErrorKlasse() {this->Fehlernummer=GetLastError();} };mal davon abgesehen versteh ich nicht, warum du es so umständlich machst...
was spricht denn gegen(vor allem solltest du dich entweder für deutsch oder englisch entscheiden - finde ich zumindest ^^)
HauptErrorKlasse fehler_klasse; const unsigned long fehler_nr (fehler_klasse.GetLastError ());und
unsigned long GetErrorNumber() const /*!*/ {return this->Fehlernummer;};bb
edit: außerdem versteh ich gar nicht so recht, was du damit anfangen willst ><
exceptions werden eigtl im Allgemeinen so "gemacht":
#include <exception> class Teigene_Exception : public std::exception { public: Teigene_Exception (const char * const string = NULL) : std::exception (string) {}; }; //werfen: throw Teigene_Exception ("fehlermeldung - kannst du auch weglassen"); //fangen: try { funktion (); } catch (Teigene_Exception i) { std::cout << "Teigene_Exception-Fehlermeldung: " << i.what () << std::endl; } catch (...) { std::cout << "unbekannter fehler ><" << std::endl; }cu
-
Dankeschön für deine Mühe
Mich für das komisch-komplexe Gerüst zu rechtfertigen würde warscheinlicher länger dauern, aber ich sehe einen Sinn darin und das zählt =).
Ich werd mich ab jetzt bemühen strikt bei Deutsch zu bleiben. Das war eigentlich zu Anfang einer meiner Grundsätze.
Danke für die Fehlerfindung. Ich hab wie du bereits sagtest unordentlich geschrieben und den Compiler-Error falsch interpretiert...
EDIT: mit der std::exception Klasse habe ich mich noch nicht auseinandergesetzt, aber anscheinend wird es Zeit