exception Deklaration in Interfaces



  • Hallo,

    ich wollte ein kleines Projekt von mir nach 6 Monaten Pause wieder
    anfangen und bin ein bisserl raus aus C++.

    Ich hatte wohl vor alle exceptions in "my_exceptions.hpp"
    aufzulisten und in "my_exceptions.cpp" zu implementieren.

    Die Dateien sehen dann mehr oder weniger so aus:

    my_exceptions.hpp

    // includes
    #include <stdexcept>
    
    // using declarations
    using std::logic_error;
    using std::string;
    
    // error classes
    class error_vm_in_adt;
    

    my_exceptions.cpp

    #include "my_exceptions.hpp"
    
    class error_vm_in_adt: public logic_error 
    {
    	public:
    		// constructor
    		explicit error_vm_in_adt(const string & message):
    		logic_error(message)
    		{} // constructor
    
    		// overwritten virtual member
            virtual const char * what()
    		{
    			return logic_error::what();
    		} // what
    
    }; // error_vm_in_adt
    

    Wenn ich die Exception aber werfen will, scheint der Compiler Probleme
    zu haben, die member functions in der cpp-Datei zu erkennen.

    Nun hätte ich aber in meinem Interface gern nur die
    Deklarationen der exception-class,
    aber nicht der jeweiligen member functions,
    weil ich das als übersichtlicher empfinde.

    Wie kann ich das realisieren?

    Vielen Dank für die Vorschläge

    Rahul



  • Rahul0891 schrieb:

    Nun hätte ich aber in meinem Interface gern nur die
    Deklarationen der exception-class,
    aber nicht der jeweiligen member functions,
    weil ich das als übersichtlicher empfinde.

    Wie kann ich das realisieren?

    Garnicht. Wenn du Funktionen von außen aufrufen können willst, musst du sie auch im Header deklarieren.
    Außerdme solltest du using-Direktiven im Header im globalen Namensraum vermeiden.



  • pumuckl schrieb:

    Garnicht. Wenn du Funktionen von außen aufrufen können willst, musst du sie auch im Header deklarieren.

    Auch nicht mit mehrfach geschachtelten Interfaces,
    ich meine irgendwo sowas gelesen zu haben,
    bin mir aber nicht sicher.

    pumuckl schrieb:

    Außerdme solltest du using-Direktiven im Header im globalen Namensraum vermeiden.

    using direktiven versuche ich allgemein zu vermeiden, aber auch using deklarationen? die sind doch recht speziell gehalten...


Anmelden zum Antworten