Problema con template

di il
3 risposte

Problema con template

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

3 Risposte

Devi accedere o registrarti per scrivere nel forum
3 risposte