Vererbung und #includes



  • Hallo Community,

    ich habe folgendes Konstrukt:

    Habe eine Klasse mit dem Namen 'TheClass'. Die Klasse holt sich mittels der #include Anweisung die Klasse mit dem Namen 'Class_1'.
    Diese 'Class_1' führt einen #include der Klasse 'Class_2' aus.
    Das Problem was sich bei mir stellt ist folgendes das die 'Class_2' von der Klasse 'TheClass' erben sollte/müsste.

    Wenn ich dies allerdings programmiere steigt mit der Compliler immer mit C2504.

    Habe auch schon viele Versuche unternommen das Problem mit einer Vorrausdeklaration (s. Kommentare) zu lösen. Leider bislang ohne Erflog.

    Was mich nun vorallem interessiern würde, ist ein solches "Konstrukt" überhaupt möglich, bzw. wenn ja wie wäre der Lösungsansatz.

    Hier mal noch der Quellcode aus meinem Versuchsprojekt.
    'TheClass'

    #ifndef __theClass__
    #define __theClass__
    
    // Header
    #include <wx/wx.h>
    // hier Varianten von Vorrausdeklaration versucht
    #include "class1.h"
    
    class theClass
    {
    protected:
    	wxString txt;
    
    public:
    	/* c'tor */
    	theClass();
    
    	// Eine einfache Get Funktion
    	wxString TxtGet() const;
    
    };
    #endif // __theClass__
    

    'Class_1'

    #ifndef __class1__
    #define __class1__
    
    // Header
    #include <wx/wx.h>
    // hier Varianten von Vorrausdeklaration versucht
    #include "class2.h"
    
    class class1
    {
    protected:
    	wxString txt_class1;
    public:
    	/* c'tor */
    	class1();
    
    	// text back
    	wxString TxtGet() const;
    };
    
    #endif //__class1__
    

    'Class_2'

    #ifndef __class2__
    #define __class2__
    
    // Header
    #include <wx/wx.h>
    // class class1;
    // class class2;
    // class theClass; // hier Varianten von Vorrausdeklaration versucht
    #include "theClass.h"
    
    class class2 : public theClass
    {
    protected:
    	wxString txt_class2;
    public:
    	/* c'tor */
    	class2(const theClass& datIsSe);
    
    	// text back
    	wxString TxtGet() const;
    
    };
    #endif // __class2__
    

    Schon mal besten Dank für mögliche antworten



  • Antwortet sich jetzt mal selbst.

    Wird erst funktionieren wenn ich dir sog. Ringabhängigkeit auflöse. Ja erstaunlich wenn man einen Begriff findet nach dem man(n) googlen und suchen kann findet man auch was 😉

    Geb hier mal noch zwei Links von Forenbeiträgen an:
    [url]
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-197696-and-highlight-is-ringabh�ngigkeiten.html
    [/url]
    [url]
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-268741-and-start-is-20-and-postdays-is-0-and-postorder-is-asc-and-highlight-is--and-printview-is-1-and-start-is-0.html
    [/url]

    Das heißt werde bei mir einiges umstricken



  • Warum brauchst du das class1 include überhaupt im Header von theClass?



  • Weil in meinem richtigen Projekt im Header der Type 'Class_1' verwendet wird, als Übergabe- bzw. Rückgabeparameter in diversen Funktionen.

    Aber da ich nach langem googeln und Forumsbeiträge lesen gemerkt habe, das ich ihn nicht aus "Ringabhängigkeit" herraus bekomme.

    Weil ja 'Class_2' von 'theClass' erben muß. Sonst könnte ich ja mit Zeigern arbeiten in der Klasse und eine Vorwärtsdeklaration machen.

    Muß ich halt a bissl mehr im Projekt überarbeiten...

    Hab hier ja nur kurz ein Versuchsprojekt gepostet, weil der Post des richtigen Projektes zu groß wäre.


Anmelden zum Antworten