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.