Raga mi date un'occhiata a questo Template? Grazie.
stack.h
codice:
#ifndef _STACK_
#define _STACK_
template<class tipo>
class stack
{
int top;
int size;
tipo* elements;
public:
stack(int n);
~stack() {delete[] elements;}
void push(tipo a);
tipo pop();
};
#endif // _STACK_
stack.cpp
codice:
#include "stack.h"
#include <iostream.h>
template<class tipo>
stack<tipo>::stack(int n)
{
size = n;
elements = new tipo[size];
top = 0;
}
void stack<tipo>::push(tipo a)
{
if (top < size)
{
elements[top] = a;
top++;
}
}
tipo stack<tipo>::pop()
{
if (!top)
return (tipo) 0;
top--;
return elements[top];
}
void display(stack<tipo>& s)
{
tipo a;
while (a = s.pop())
cout << a << endl;
}
main.cpp
codice:
#include "stack.h"
#include <iostream.h>
void main()
{
stack<char> cstack(10);
stack<double> fstack(20);
stack<char*> sstack(5);
cstack.push('a');
cstack.push('b');
cstack.push('c');
display(cstack); // scrive: c b a
fstack.push(1.23);
fstack.push(4.56);
fstack.push(7.89);
display(fstack); // scrive: 7.89 4.56 1.23
sstack.push("uno");
sstack.push("due");
sstack.push("tre");
display(sstack); // scrive: tre due uno
}