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
codice:
#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";
}
testcodac.cpp
codice:
#include "pilac.h"
#include<iostream>
#include<stdlib.h>
using namespace std;
int main()
{
pilac<int> stack;
system("pause");
return 0;
}
in pratica il test è per vedere se funziona il costruttore (è da completare): l'errore che mi viene visualizzato è il seguente:
[Linker error] undefined reference to `WinMain@16'
cosa devo fare???