ok ho modificato il sorgente come mi hai detto..
------------------------------------------------------------------------------------
//stack1.h
#ifndef STACK1_H
#define STACK1_H
template <typename T> class Stack{
public:
Stack(int=10);//costruttore
~Stack();//ditruttore alt+126
bool Push(T);
bool Pop(T &);
bool isEmpty();
bool isFull();
void getTOS(int &);
private:
int size;
T *ptr;
int top;
};
//costruttore ello stack
template <typename T> Stack <T>::Stack(int num):size(num > 0 ? num : 10),ptr(new T[size]),top(-1){}
//inserimento di un elemento in testa
template <typename T> bool Stack <T>::Push(T obj){
if(top<size-1){
ptr[top]=obj;
++top;
return 1;
}
cout<<"Stack pieno.\nNon è possibile inserire nuovi elementi\n";
return 0;
}
//toglie un elemento dalla testa
template <typename T> bool Stack <T>::Pop(T &obj){
if(top>-1){
obj=ptr[top-1];
top--;
return 1;
}
cout<<"Stack vuoto.\nImpossibile togliere elementi\n";
return 0;
}
template <typename T> bool Stack <T>::isEmpty(){return(top==-1 ? 1:0);}
template <typename T> bool Stack <T>::isFull(){return(top==(size-1) ? 1:0)};
template <typename T> Stack <T>::~Stack(){delete [] ptr;}
template <typename T> void Stack <T>::getTOS(int &TOS){TOS=top;}
#endif
--------------------------------------------------------------------------------------
//main.cpp
#include "stack1.h"
#include <iostream>
using namespace std;
int main(){
int siz;
int obj;
int TOS;
cout<<"Immetti la dimensione dello stack...\n";
cin>>siz;
Stack <int> intStack(siz);
cout<<"push 2 interi nello stack...3 2..\n";
intStack.Push(3);
intStack.Push(2);
intStack.getTOS(TOS);
cout<<"TOS: "<<TOS<<"\n";
cout<<"pop 1 elemento..\n";
intStack.Pop(obj);
cout<<"L'elemento poppato e': "<<obj<<"\n";
return 0;
}
------------------------------------------------------------------------------------
ora sembra tutto a posto..però quando eseguo alla fine del prog mi da un errore::
Debug error!!! Program:Stack.exe
Damage:before normal block(#70)at 0x00ecc
cosa ho sbagliato??non riesco a capire![]()