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 :)