Innanzitutto premetto che sono nuovo di questo forum e non molto rodato sulla programmazione in c++, il mio compito è di implementare un template di stack usando Eclipse.il codice formato da header file e 2 .cpp di cui uno di test è questo sotto.Sinceramente non riesco a capire dove è l'errore che commetto e vorrei capire cosa è...
#ifndef STACK_H_
#define STACK_H_
#include <iostream>
template< class T >
class STACK{
public:
STACK(int=10); //costruttore di default
~STACK(){delete[] stackPtr;} ;//distruttore per quanto riguarda delete[ ]Deallocates the memory block
//pointed by ptr (if not null), releasing the storage space previously allocated to it by a call to operator new[] and rendering that pointer location invalid.
bool push(const T&);//inserisce un elemento sulla pila
bool pop(T&);
private:
int size; //numero degli elementi della pila
int top; //indice dell'elemento incima alla pila
T *stackPtr; //puntatore alla pila
bool isEmpty() const {return top==1;}
bool isFull() const {return top==size-1;}
};
#endif /* STACK_H_ */
#include"STACK.h"
#include <iostream>
using namespace std;
#include "stdlib.h"
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;
}
infine il file di test è
#include <iostream>
#include <iomanip>
using namespace std;
#include"STACK.h"
using namespace std;
int main()
{
STACK<double> doubleStack(5);
double f=1.1;
cout<<"Pushing elements onto doubleStack\n";
while(doubleStack.push(f)) {
cout<<f;
f +=1.1;
cout<<"\nStack is full.Cannot push "<<f
<<"\nPopping elements from doubletack\n";
}
return 0;
}
In particolare l'errore è" undefined reference to `STACK<double>::STACK(int)' "
..dove sbaglio?è palese il mio errore ?grazie