/* Kirjan esimerkkiä 2.8 mukaillen ... */ #include class Henkilo { private: char * nimi; public: Henkilo(char *n) {nimi = new char [strlen(n)+1]; strcpy(nimi,n);} void tervehdi() {printf("Olen %s.\n",nimi);} }; template class Stack { private: T *tila; // C++:n dynaamisesti varattava taulukko int top; int max; void error() { /* ... */ } public: void push(T x) { if (top < max) { tila[++top] = x;} else { printf("Ylivuoto\n"); error(); } } T pop() { if (top >= 0) { return tila[top--];} else { printf("Underflow\n"); error(); } } Stack(int n) {tila = new T [n]; max = n-1; top = -1;} }; // pääohjelma main() { int i, j; Stack *ipino = new Stack(10); Stack *hpino = new Stack(100); Henkilo *eeva = new Henkilo("Eeva"); Henkilo *X; ipino->push(7); ipino->push(2); i = ipino->pop(); j = ipino->pop(); printf("i: %d, j: %d\n",i,j); hpino->push(eeva); X = hpino->pop(); X->tervehdi(); return 0; }