tmpl/expldef1.hpp

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 "expl.hpp"

// Definition des Funktions-Templates max()
template <typename T>
const T& max (const T& a, const T& b)
{
    return (a > b ? a : b);
}

// Definition der Funktionen des Klassen-Templates Stack<>

namespace Bsp {  // ******** Beginn Namensbereich Bsp::

// Konstruktor
template <typename T>
Stack<T>::Stack ()
{
    // nichts mehr zu tun
}

template <typename T>
void Stack<T>::push (const T& elem)
{
    elems.push_back(elem);    // Kopie einkellern
}

template<typename T>
T Stack<T>::pop ()
{
    if (elems.empty()) {
        throw "Stack<>::pop(): der Stack ist leer";
    }
    T elem = elems.back();    // oberstes Element merken
    elems.pop_back();         // oberstes Element auskellern
    return elem;              // gemerktes oberstes Element zurückliefern
}

template <typename T>
T Stack<T>::top () const
{
    if (elems.empty()) {
        throw "Stack<>::top(): der Stack ist leer";
    }
    return elems.back();      // oberstes Element als Kopie zurückliefern
}

}  // ******** Ende Namensbereich Bsp::