Salve, sto scrivendo la classe Lista template, che funziona come la struttura list dell'stl.
Ho creato fondamentalmente due classi, la classe Lista e quella Elemento, di cui vi allego l'interfaccia (senza le varie implementazioni).
#include "Elemento.h"
template <class T>
class Lista
{
private:
Elemento<T>* testa;
Elemento<T>* coda;
public:
Lista(Elemento<T>* = 0, Elemento<T>* = 0);
Lista(const Lista&);
~Lista();
void pushTesta(T);
void pushCoda(T);
void delTesta();
void delCoda();
};
template <class V>
class Elemento
{
friend class Lista<V>; // <-- problema
private:
V valore;
Elemento* succ;
public:
Elemento(V, Elemento* = 0);
};
In virtù del funzionamento dei metodi della classe lista, mi è apparso ovvio che Elemento dovesse essere friend di Lista, ma il compilatore continua a darmi problemi (g++). In definitiva la domanda è questa: come faccio a dichiarare una template class friend di una template class, così che questa possa modificare i dati privati della prima?
Grazie mille per l'attenzione.