vererb/gruppe2.cpp

Das folgende Code-Beispiel stammt aus dem Buch
Objektorientiertes Programmieren in C++ - Ein Tutorial für Ein- und Umsteiger
von Nicolai Josuttis, Addison-Wesley München, 2001
© Copyright Nicolai Josuttis 2001


#include "gruppe.hpp"
#include <algorithm>

namespace Geo {

/* add
 * - Element einfügen
 */
void GeoGruppe::add (GeoObj& obj)
{
    // Adresse vom geometrischen Objekt eintragen
    elems.push_back(&obj);
}

/* remove
 * - Element löschen
 */
bool GeoGruppe::remove (GeoObj& obj)
{
    // erstes Element mit dieser Adresse finden
    std::vector<GeoObj*>::iterator pos;
    pos = std::find(elems.begin(),elems.end(),
                    &obj);
    if (pos != elems.end()) {
        elems.erase(pos);
        return true;
    }
    else {
        return false;
    }
}

/* draw
 * - alle Elemente unter Berücksichtigung des Referenzpunktes ausgeben
 */
void GeoGruppe::draw () const
{
    for (unsigned i=0; i<elems.size(); ++i) {
        elems[i]->move(refpunkt);   // Offset für den Referenzpunkt addieren
        elems[i]->draw();           // Element ausgeben
        elems[i]->move(-refpunkt);  // Offset wieder entfernen
    }
}

}  // namespace Geo