Problem mit Abhängigkeit zweier Klassen



  • Schönen guten Abend.

    Generell sollte man ja vermeiden, bei dem Klassendesign Klassen zu entwickeln, die sich gegenseitig voraussetzen. Allerdings fehlt mir der passende Lösungsweg für meine momentane Problematik:

    Klasse 'CLizzy' hat eine Instanz von 'CMsgHandler'. Nun muss diese Instanz immer wissen, zu welcher 'CLizzy'-Instanz sie gehört, denn sie braucht den Zugriff auf einige andere Member-Variablen und -Funktionen.

    Mir sind jetzt prompt zwei Lösungsmöglichkeiten eingefallen:
    1. Ich nutze im Codeteil von 'CMsgHandler' ein 'extern CLizzy <<Name der Instanz>>'. Daran gefällt mir nicht, dass es die Sache extrem statisch und unschön machen würde.
    2. Ich setze einen Prototyp für 'CLizzy' über die 'CMsgHandler'-Definition und verwende eine Member-Variable in 'CMsgHandler' als Pointer, der letztendlich auf die zugehörige 'CLizzy'-Instanz zeigt.

    Hat da jemand ein paar hilfreiche Tipps? Möchte schließlich von Beginn an darauf achten, dass das Klassendesign so entwirrt wie möglich bleibt.

    Stefan



  • Stichwort: Forward-Deklaration:

    class CLizzy;
    
    class CMsgHandler
    {
    public:
      CMsgHandler(CLizzy* liz) : m_owner(liz) {}
      ...
    private:
      CLizzy* m_owner;
    };
    
    class CLizzy
    {
    public:
      CLizzy() : m_hnd(this) {}
      ...
    private:
      CMsgHandler m_hnd;
    };
    


  • Dankeschön für die Hilfe, scheint mir ganz sinnig. 🙂


Anmelden zum Antworten