ciao a tutti, sto realizzando la struttura dati lista con i cursori, una via di mezzo tre realizzazione con vettore e con puntatore. sono ancora all'inizio e ho creato il costruttore e il metodo crealista. facendo il test per vedere se l'oggetto viene creato mi dà errore. posto i codici.
listac.h
codice:
#ifndef listac_h
#define listac_h
#include <iostream>
#include <stdlib.h>
using namespace std;
const int lungvet = 100;
template<class tipoelem>
class listac
{
public:
typedef int posizione;
listac();
void crealista();
private:
struct nodo
{
posizione precedente;
tipoelem elemento;
posizione successivo;
};
static nodo spazio[lungvet];
static posizione listalibera;
int lunglistalibera;
posizione lista;
void inizializzalistalibera()
{
for(int i = 0; i < (lungvet - 1); i++)
{
if(i == 0)
{
spazio[i].precedente = lungvet - 1;
spazio[i].successivo = i + 1;
}
else
{
spazio[i].precedente = i - 1;
spazio[i].successivo = i + 1;
}
}
spazio[lungvet - 1].precedente = lungvet - 2;
spazio[lungvet - 1].successivo = 0;
listalibera = 0;
}
};
#endif
template<class tipoelem>
listac<tipoelem>::listac()
{
this->crealista();
}
template<class tipoelem>
void listac<tipoelem>::crealista()
{
lista = listalibera;
listalibera = spazio[listalibera].successivo;
spazio[listalibera].precedente = spazio[lista].precedente;
spazio[lista].precedente = lista;
spazio[lista].successivo = lista;
}
testlistac.cpp
codice:
#include "listac.h"
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
listac<int> list;
system("pause");
return 0;
}
gli errori che mi vengono visualizzati sono i seguenti:
[Linker error] undefined reference to `listac<int>::listalibera'
[Linker error] undefined reference to `listac<int>::listalibera'
[Linker error] undefined reference to `listac<int>::spazio'
[Linker error] undefined reference to `listac<int>::listalibera'
[Linker error] undefined reference to `listac<int>::listalibera'
[Linker error] undefined reference to `listac<int>::spazio'
[Linker error] undefined reference to `listac<int>::spazio'
[Linker error] undefined reference to `listac<int>::spazio'
[Linker error] undefined reference to `listac<int>::spazio'
cosa devo correggere???