Folgende Konselation => Designfehler??



  • Wenn ich zwei Klassen haben, welche sich gegenseitig referenzieren, ist dies dann ein zeichen für schlechte Desing? (abgesehen das ich dies in 2 Header kapseln muss)

    class B{
    
     A *m_p;
    
      B(): m_p(new A(this)){
    
      }
    
    };
    class A{
    
      B *m_p;
    
      A(B *p) : m_p(p){
         //über m_p habe ich zugriff auf variabelen von B Objekt
      }
    
    };
    


  • Nein. f'`8k

    Autocogito

    Gruß, TGGC (making great games since 1992)



  • Es gibt durchaus Fälle, wo sowas Sinn macht - bestes Beispiel Container <-> Iterator (OK, die meisten Container lagern keine Iteratoren intern, sondern erzeugen sie auf Anfage, aber das Prinzip ist das selbe) oder SpielEngine <-> Spielfigur.

    (ich hab' hier auch ein ähnliches Design - ein Netz hat einen vector<object> und jeder wieder einen Backlink zu seinem Netz)

    PS: Und du mußt die Klassen nicht in zwei Header verteilen, du kannst sie auch gerne in einen Header zusammenfassen.


Anmelden zum Antworten