#include #include #include using namespace std; template class Stos { Data* data; int top; public: Stos(); bool empty() const; void push(Data); Data pop(); ~Stos(); }; template Stos::Stos() { data = new Data[size]; top = 0; } template inline bool Stos::empty() const { return top == 0; } template inline void Stos::push(Data dat) { data[top++] = dat; } template inline Data Stos::pop() { return data[--top]; } template inline Stos::~Stos() { delete [] data; } // szablon funkcji globalnej template void oproznij(Stos* p_stos) { cout << "Stos typu " << typeid(Data).name() << ": "; while ( ! p_stos->empty() ) { cout << p_stos->pop() << " "; } cout << endl; } int main() { Stos stos_i; stos_i.push(11); stos_i.push(36); stos_i.push(49); stos_i.push(92); Stos stos_s; stos_s.push("Ala"); stos_s.push("Ela"); stos_s.push("Ola"); stos_s.push("Ula"); oproznij(&stos_i); oproznij(&stos_s); }