next up previous
Implementation des COMPOSITE-Patterns und RTTI


D.h. folgende Schnittstelle muß diesbezüglich in ZGeoObj implementiert werden:

 
ZGeoObj();
ZGeoObj(const ZGeoObj &right);

const ZGeoObj& operator=(const ZGeoObj &right);

void Add(GeoObj& _GeoObj);
GeoObj* Remove(GeoObj& _GeoObj);

GeoObj* GetGeoObj(int i);

Um beliebige GeoObjs aus einem ZGeoObj hinzufügen und auch wieder entfernen zu können, muß es einen Vergleich zwischen GeoObjs geben. Die Betonung liegt auf dem Vergleich von GeoObjs, da der Compiler nicht wissen kann, an welcher Stelle im ZGeoObj welcher genaue Typ eines GeoObjs gespeichert ist. Es müssen also Rechtecke mit Dreiecken etc. verglichen werden können. Diesbezüglich muß es also folgende Operatoren geben:

 
int operator==(const GeoObj& left, const GeoObj& right);
int operator!=(const GeoObj& left, const GeoObj& right);
Um diesen Vergleich zu implementieren, können z.B. Typabfragen bzw. dynamische Downcasts verwendet werden.

next up previous