[Composition]Zugriff auf auessere Klasse



  • Ich habe haeufig folgendes Problem:
    Ich habe eine Klasse, die per Composition mehrere member Objects hat.

    class Foo
    { };
    
    class Bar
    { };
    
    class Baz
    {
    private:
        Foo foo;
        Bar bar;
    };
    

    Mit foo moechte ich nun Operationen durchfuehren, die bar betreffen.
    Ich finde es aber haesslich, immer einen zusaetzlichen Parameter Foo::Foo(/...../,const Baz& outter_class) zu definieren, mit dem ich auf das Baz Object und somit auf bar zugreifen kann.
    Ich koennte natuerlich auch Baz::bar als static deklarieren, aber ich finde, das ist auch nicht ganz das gelbe vom Ei...



  • foo im Konstruktor einen Zeiger auf bar übergeben?



  • ness schrieb:

    foo im Konstruktor einen Zeiger auf bar übergeben?

    🙄

    Raptor schrieb:

    Ich finde es aber haesslich, immer einen zusaetzlichen Parameter Foo::Foo(/...../,const Baz& outter_class) zu definieren, mit dem ich auf das Baz Object und somit auf bar zugreifen kann.



  • Raptor schrieb:

    Ich finde es aber haesslich, immer einen zusaetzlichen Parameter Foo::Foo(/...../,const Baz& outter_class) zu definieren, mit dem ich auf das Baz Object und somit auf bar zugreifen kann.

    Was genau ist daran "hässlich"? Wie willst du es sonst machen? Kommt Foo evtl. auch ohne Baz aus und du meinst es wäre geschickter lediglich den betroffenen Methoden das Bar-Objekt mitzugeben? Oder vermutest du ein anderes Klassendesign würde dir diese Abscheulichkeiten ersparen?

    Raptor schrieb:

    Ich koennte natuerlich auch Baz::bar als static deklarieren, aber ich finde, das ist auch nicht ganz das gelbe vom Ei...

    Dir ist schon bewußt was static bewirkt?



  • finix schrieb:

    Raptor schrieb:

    Ich finde es aber haesslich, immer einen zusaetzlichen Parameter Foo::Foo(/...../,const Baz& outter_class) zu definieren, mit dem ich auf das Baz Object und somit auf bar zugreifen kann.

    Was genau ist daran "hässlich"? Wie willst du es sonst machen? Kommt Foo evtl. auch ohne Baz aus und du meinst es wäre geschickter lediglich den betroffenen Methoden das Bar-Objekt mitzugeben? Oder vermutest du ein anderes Klassendesign würde dir diese Abscheulichkeiten ersparen?

    Tja, dann muss ich wohl immer den Parameter definieren oder static benutzen.

    finix schrieb:

    Raptor schrieb:

    Ich koennte natuerlich auch Baz::bar als static deklarieren, aber ich finde, das ist auch nicht ganz das gelbe vom Ei...

    Dir ist schon bewußt was static bewirkt?

    Ja.


Anmelden zum Antworten