Dubios.
Am cautat putin pe net dar nu am inteles exact cum functioneaza variabilele statice ale unei clase template in C++.
Problema este momentul in care este creata variabila statica. Pe langa asta si declararea este neclara, desi are sens din punct de vedere sintactic al C++.
In orice caz, tu trebuie sa scrii:
template <typename T> Lista <T> *Lista <T> :: head = NULL;
Ceea ce nu inteleg este cum o sa te ajute variabila statica.
Variabila statica este aceiasi pentru toate clasele de acelasi fel, iar in clasa ta cam pierzi capul listei.
#include <cstdio>
template <typename T> class Lista {
public:
static Lista<T> *head ;
};
template <typename T> Lista<T> *Lista<T>::head = NULL;
int main() {
Lista <int> A, B, C;
A.head = &B;
C.head = &A;
B.head = &C;
D.head = &E;
E.head = &D;
// Afiseaza adresele fiecarei clase
printf("%p %p %p\n", &A, &B, &C);
// Afiseaza aceiasi valoare, adresa clasei C
printf("%p %p %p\n", A.head, B.head, C.head);
printf("%p %p\n", &D, &E);
printf("%p %p\n", D.head, E.head);
return 0;
}