Salve, eclipse mi restituisce un errore di sintassi alla voce popValue=stackPtr[top-]
file header
#ifndef TEMP_H_
#define TEMP_H_
#include <iostream>
using namespace std;
template <class T>
class Stack {
public:
Stack(int=10);
~Stack() {delete [] stackPtr;}
bool push ( const T&);
bool pop(T&);
private:
int size;
int top;
T *stackPtr;
bool isEmpty() const { return top==-1;}
bool isFull() const { return top==size-1;}
};
template <class T>
Stack<T>::Stack(int s)
{
size=s>0 ? s:10;
top=-1;
stackPtr=new T[size];
}
template <class T>
bool Stack<T>::push(const T &pushValue)
{
if (!isFull())
{
stackPtr[++top]=pushValue;
return true;
}
return false;
}
template <class T>
bool Stack<T>::pop (T &popValue)
{
if (!isEmpty()){
popValue=stackPtr[top-];
return true;
}
return false;
}
#endif /* TEMP_H_ */
file main
#include <iostream>
#include "temp.h"
using namespace std;
int main(){
Stack<double> doubleStack(5);
double f=1.1;
cout<<"immettere gli elementi nello stack\n";
while(doubleStack.push(f)){
cout<<f<<' ';
f+=1.1;
}
cout<<"\nLo Stack è pieno. Non posso inserire "<<f
<<"\n\nSto togliendo elementi dallo stack\n";
while(doubleStack.pop(f)){
cout<<f<<' ';
cout<<"\nStack è vuoto. Non posso prelevare\n";
Stack<int> intStack;
int i=1;
cout<<"\nInserisco elementi sullo stack\n";
while(intStack.push(i))
{
cout<<i<<' ';
++i;
}
cout<<"\nStack è pieno. Non posso inserire "<<i
<<"\n\nPrelevo dallo stack\n";
while(intStack.pop(i)){
cout<<i<<' ';
cout<<"lo stack è vuoto. Non posso prelevare ulteriormente\n";
return 0;
}
}
}
Qualcuno gentilmente potrebbe dirmi il perchè? Grazie