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
namespace Bsp { // ******** Beginn Namensbereich Bsp::
template <typename T, int MAXSIZE>
class Stack {
private:
T elems[MAXSIZE]; // Elemente
int numElems; // aktuelle Anzahl eingetragener Elemente
public:
Stack(); // Konstruktor
void push(const T&); // Element einkellern
T pop(); // Element auskellern
T top() const; // oberstes Element
};
// Konstruktor
template <typename T, int MAXSIZE>
Stack<T,MAXSIZE>::Stack ()
: numElems(0) // kein Elemente
{
// nichts mehr zu tun
}
template <typename T, int MAXSIZE>
void Stack<T,MAXSIZE>::push (const T& elem)
{
if (numElems == MAXSIZE) {
throw "Stack<>::push(): der Stack ist voll";
}
elems[numElems] = elem; // Element eintragen
++numElems; // Anzahl der Elemente erhöhen
}
template<typename T, int MAXSIZE>
T Stack<T,MAXSIZE>::pop ()
{
if (numElems <= 0) {
throw "Stack<>::pop(): der Stack ist leer";
}
--numElems; // Anzahl der Elemente herabsetzen
return elems[numElems]; // bisheriges oberstes Element zurückliefern
}
template <typename T, int MAXSIZE>
T Stack<T,MAXSIZE>::top () const
{
if (numElems <= 0) {
throw "Stack<>::top(): der Stack ist leer";
}
return elems[numElems-1]; // oberstes Element zurückliefern
}
} // ******** Ende Namensbereich Bsp::