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
template <typename GeoObj>
void zeichne (const GeoObj& obj) {
obj.draw();
}
// Abstand zwischen zwei geometrischen Objekten berechnen
template <typename GeoObj1, typename GeoObj2>
Koord abstand (const GeoObj1& x1, const GeoObj2& x2) {
Koord a = x1.position() - x2.position();
return a.abs();
}
// inhomogene Menge von geometrischen Objekten ausgeben
template <typename GeoObj>
void ausgeben (const std::vector<GeoObj>& elems) {
for (unsigned i=0; i<elems.size(); ++i) {
elems[i].draw();
}
}
int main()
{
Linie l;
Kreis k;
Kreis k1, k2;
zeichne(l); // zeichne<Linie>(GeoObj&) => Linie::draw()
zeichne(k); // zeichne<Kreis>(GeoObj&) => Kreis::draw()
abstand(k1,k2); // abstand<Kreis,Kreis>(GeoObj&,GeoObj&)
abstand(l,k); // abstand<Linie,Kreis>(GeoObj&,GeoObj&)
\ccstd::vector<GeoObj*> menge; // FEHLER: keine inhomogene Menge möglich
std::vector<Linie> menge; // OK: homogene Menge
menge.push_back(l); // Linie einfügen
ausgeben(menge); // Menge ausgeben
}