tmpl/dynapoly.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


// beliebiges geometrisches Objekt zeichnen
void zeichne (const GeoObj& obj) {
    obj.draw();
}

// Abstand zwischen zwei geometrischen Objekten berechnen
Koord abstand (const GeoObj& x1, const GeoObj& x2) {
    Koord a = x1.position() - x2.position();
    return a.abs();
}

// inhomogene Menge von geometrischen Objekten ausgeben
void ausgeben (const std::vector<GeoObj*>& elems) {
    for (unsigned i=0; i<elems.size(); ++i) {
        elems[i]->draw();
    }
}

int main()
{
    Linie l;
    Kreis k, k1, k2;

    zeichne(l);            // zeichne(GeoObj&) => Linie::draw()
    zeichne(k);            // zeichne(GeoObj&) => Kreis::draw()

    abstand(k1,k2);        // abstand(GeoObj&,GeoObj&)
    abstand(l,k);          // abstand(GeoObj&,GeoObj&)

    std::vector<GeoObj*> menge;  // inhomogene Menge
    menge.push_back(&l);         // Linie einfügen
    menge.push_back(&k);         // Kreis einfügen
    ausgeben(menge);             // Menge ausgeben
}