ciao a tutti, ho creato la struttura dati pila con cursori, nel testare se i metodi sono stati creati correttamente, ricevo un errore dopo la compilazione. i codici della struttura e del relativo test sono i seguenti:
pilac.h
testcodac.cppcodice:#ifndef pilac_h #define pilac_h #include<iostream> #include<stdlib.h> #define MAXSPAZIO 1000 using namespace std: template<class tipoelem> class pilac { public: pilac(); void creapila(); bool pilavuota(); tipoelem leggipila(); void inpila(tipoelem); void fuoripila(); private: typedef struct Nodo { int precedente; tipoelem elemento; } nodoc; static nodo spazio[MAXSPAZIO]; static int testalibera; static int lungpilalibera; int testa; int lungpila; static nodo *inizializzalibera(); void sposta(int *, int *); }; #endif template<class tipoelem> typename pilac<tipoelem>::nodo pilac<tipoelem>::spazio = inizializzalibera(); template<class tipoelem> int pilac<tipoelem>::testalibera = MAXSPAZIO - 1; template<class tipoelem> int pilac<tipoelem>::lungpilalibera = MAXSPAZIO; template<class tipoelem> typename pilac<tipoelem>::nodo *pilac<tipoelem>::inizializzalibera() { for(int i = 0; i < MAXSPAZIO; i++) { spazio[i].prec = i - 1; spazio[i].elemento = new tipoelem; } return spazio; } template<class tipoelem> void pilac<tipoelem>::sposta(int *pos1, int *pos2) { int temp = *pos1; *pos1 = spazio[*pos1].precedente; spazio[temp].precedente = *pos2; *pos2 = temp; } template<class tipoelem> pilac<tipoelem>::pilac() { this->creapila(); } template<class tipoelem> void pilac<tipoelem>::creapila() { testa = testalibera; lungpila = 0; } template<class tipoelem> bool pilac<tipoelem>::pilavuota() { return(lungpila == 0) } template<class tipoelem> tipoelem pilac<tipoelem>::leggipila(); { return(spazio[testa].elemento); } template<class tipoelem> void pilac<tipoelem>::inpila(tipoelem elem) { if(lungpilalibera != 0) { sposta(&testalibera, &testa); spazio[testa].elemento = elem; lungpila++; lungpilalibera--; } else cerr << "spazio non sufficiente.\n\n"; } template<class tipoelem> void pilac<tipoelem>::fuoripila() { if(lungpila != 0) { sposta(&testa, &testalibera); spazio[testalibera].elemento = testalibera; lungpila--; lungpilalibera++; } else cerr << "pila vuota.\n\n"; }
in pratica il test è per vedere se funziona il costruttore (è da completare): l'errore che mi viene visualizzato è il seguente:codice:#include "pilac.h" #include<iostream> #include<stdlib.h> using namespace std; int main() { pilac<int> stack; system("pause"); return 0; }
[Linker error] undefined reference to `WinMain@16'
cosa devo fare???

Rispondi quotando