Vererbung oder pointer



  • hallo
    also ich habe 2 Klassen im Programm:

    class CA
    { private:
         int a;
         vector<int> 1dvec;
      public:
         fa1();
         fa2();
    
    };
    class CB
    { private:
         int b;
         vecor<vector<int> > 2dvec;
      public:
         fb1();
         fb2();
    };
    

    soviel ich weiss wenn man jetzt mit der fb1()von der Klasse CB auf die Elemente von der Klasse CA z.B.(auf die Variable a)zugreifen bzw. ändern möchte soll man in dem Fall :
    1.Variante:
    eine Vererbung machen . Also die Klasse CB soll die Klasse CA vererben.un der Zugriff von der Klasse CB auf der Klasse CA erfolgt problemlos.
    mir wurde empfohlen die
    2. Variante:
    die Variablen der Klasse CA als public definieren und ein Pointer in der Klasse CB vom datentyp der Klasse CA implementieren:

    class CB
    { public:
        CA *pointer;
      ....
    };
    

    dadurch ist auch einen Zugriff von der Klasse CB auf Elemente der Klasse CA möglich.

    welche Variante ist richtig bzw. die üblichste zu verwenden. was sind die Vor und Nachteile jeder Variante?
    Danke schön



  • Wenn es dir nur um den Zugriff auf die Elemente geht, dann
    würde ich evtl. die Klasse zum friend machen.
    Oder du nimmst entsprechende Get/SetMethoden.

    Aber eigentlich sollte nur die Klasse selbst zugriff auf die Attribute haben.

    Devil



  • ich würd eventl weder noch machen

    wenn es dir geht in der klasse B die attri. von a zu manipulieren, dann wprd ich nicht public machen, sondern ne setter/getter fkt in a def. die static ist. dann rufst du die in B in der fb1() auf.

    Du kannst aber auch in der fkt.

    fb1( CA *ptr )
    

    machen, um dann

    CA meinA;
    ....
    ....
    //irgendwann
    
    meinB.fb1( meinA);
    
    //jetzt kannst du ja da du einen ptr auf meinA hast, die werte mit einer fkt manipulieren :)
    

Anmelden zum Antworten