Problem mit 2 Klassen.



  • Servus,
    ich habe 2 Klassen wobei jede Klasse auf Methoden der anderen Klasse zugreifen muss, wobei jede Klasse in einer eigenen Header-Datei definiert ist.

    Pseudocode:

    // datei1.h:
    #ifndef DATEI_1_HEADER
    #define DATEI_1_HEADER
    
    #include "datei2.h"
    
    class datei1
    {
        // ...
    public:
        void func1();
        void func2() { datei2::func2(); }
        // ...
    };
    
    #endif
    
    //#############################################################
    // datei2.h:
    #ifndef DATEI_2_HEADER
    #define DATEI_2_HEADER
    
    #include "datei1.h"
    
    class datei2
    {
        // ...
    public:
        void func1() { datei1::func1(); }
        void func2();
        // ...
    };
    
    #endif
    

    Nun machen mir hier wohl die include-wächter Probleme, da er durch einbinden der Datei2 in die Datei1 die include-wächter aktiviert werden und wenn die Datei1 in die Datei2 eingebunden werden soll greifen die include-wächter.
    Weis vielleicht jemand eine elegante Lösung dafür???
    Gruß Wolle



  • vorwärstdeklarationen

    class datei2;

    class datei1{

    }:

    class datei2{

    };



  • Wolle. schrieb:

    [cpp]
    // datei1.h:
    #ifndef DATEI_1_HEADER
    #define DATEI_1_HEADER

    #include "datei2.h"

    class datei1
    {
    // ...
    public:
    void func1();
    void func2() { datei2::func2(); } // Fehler: func2 nicht statisch
    // ...
    };

    #endif

    //#############################################################
    // datei2.h:
    #ifndef DATEI_2_HEADER
    #define DATEI_2_HEADER

    #include "datei1.h"

    class datei2
    {
    // ...
    public:
    void func1() { datei1::func1(); } // Fehler: func1 nicht statisch
    void func2();
    // ...
    };

    #endif
    [/cpp]

    Ich weiß nicht genau, was du möchtest. Hast du in jeder Klasse einen Pointer
    auf die andere Deklariert? Dann stell den Prototyp class datei2; vor datei1
    und lass das #include weg. In der .cpp-Datei kannst du dann jeweils gefahrlos
    die Header includieren und die Funktionen problemlos implemtieren.



  • Danke ihr 2 für eure Antworten, es war zwar nicht ganz so leicht (hab ich wohl etwas schlecht erklärt) aber ihr habt mich auf die richtige Spur gebracht.
    Gruß Wolle


Anmelden zum Antworten