Einbinden mehrerer Klassen die sich gegenseitig brauchen...



  • Hallo!

    Ich habe da mehrere Klassen die sich gegenseitig brauchen also zb so:

    class A {
    ...
    void foo(B* b);
    };
    class B {
    ...
    void bar(A* a);
    }
    

    Nun habe ich für jede in ne eigene header gesteckt und sie gegenseitig includiert:

    file: a.h
    #ifndef A_H
    #define A_H
    #include "b.h"
    class A {
    void foo(B* b);
    }
    #endif
    
    file: b.h
    #include "a.h"
    #ifndef B_H
    #define B_H
    class B {
    void bar(A* a);
    };
    #endif
    

    Nunja aber das geht ja so nicht da sich sich dann gegenseitig includieren... Wie macht man das?!?!?



  • Wieso dürfen die sich nicht gegenseitig includieren?



  • Vorwärstdeklaration.

    #ifndef A_HPP_INCLUDED
    #define A_HPP_INCLUDED
    
    class B;
    
    class A {
        // ...
    public:
        // ...
    
        void bar(B* b);
    
        // ...
    };
    
    #endif
    
    #ifndef B_HPP_INCLUDED
    #define A_HPP_INCLUDED
    
    class A;
    
    class B {
        // ...
    public:
        // ...
    
        void bar(A* a);
    
        // ...
    };
    
    #endif
    


  • Ixtana schrieb:

    Wieso dürfen die sich nicht gegenseitig includieren?

    mögliche endlosrekursion.

    a braucht b,b braucht wiederrum a, welches b braucht usw...


Anmelden zum Antworten