Ho un problema con header e template, devo realizzare un distributore di videonoleggio, e ho pensato di utilizzare una lista linkata, dove ogni nodo contiene un oggetto di tipo Film. Ho errori che non capisco a cosa siano dovuti, intanto posto solamente gli header di LinkedList e Node.

Node.hpp

codice:
ifndef NODE_HPP
#define	NODE_HPP


//#include <stdio.h>
#include "Film.hpp"      //error In file included from
#include <string>

template <class Film> 

class Node
{                                     //error changes meaning of 'Node' from class Node<Film>
        protected:
            string film;
            string copieDisp;
            string copieTot;
            Node* next;
            
        public:
            Node(Film element);
            ~Node();
    
    
           
           void setFilm(Film film);
           void setNext(Node * next);
           void setcopieDisp(string number);
           void setcopieTot(string number);
           Node* getNext();
           Film getFilm();
           string getcopieDisp();
           string getcopieTot();
};




#endif	/* NODE_HPP */

E LinkedList.hpp

codice:
#ifndef LINKEDLIST_HPP
#define	LINKEDLIST_HPP

#include"Node.hpp"                   //errore o meglio triangolo giallo

//template <class Film> 

class LinkedList 
{
        protected:
             typedef Node <Film>* Node;  // declaration of 'typedef class Node<Film>   LinkedList:: Node 
                                                                                                         

            Node<Film>* head;
            Node<Film>* tail;
            int size;
     
            
        public:
            LinkedList();
           ~LinkedList();
           
           
           void setHead(Node<Film>* n);
           Node<Film>* getHead();
           void setTail(Node<Film>* n);
           Node<Film>* getTail();
           int getSize();
           void addNode(Node<Film>* newNode, int copie);
           void deleteNode(Node<Film>* toRemove);
           int isPresent(Node<Film>* element);
           Film getNode(Film f);
           void giveNode(Film f);
           string copieNode(Film f);
           vector<Film> listAnno(unsigned int a);
           vector<Film> listRemake();
           Film searchFilm(string titolo, string attori, string regista);
          
           
};


#endif	/* LINKEDLIST_HPP */
Riporto anche l' header di Film che non ha errori:

codice:
#ifndef FILM_HPP
#define	FILM_HPP


//#include <stdio.h>
//#include <string.h>

using namespace std;

class Film
{
        protected:
            string titolo;
            string regista;
            int annouscita;
            bool isRemake;
            string originale;
            string attori;
            string remake;
     
            
        public:
            Film(string titolo, string regista, bool isRemake);
            Film(string titolo);
           ~Film();
           
           void setAttori(string name);
           void setOriginale(string originale);
           void setTitolo(string valore);
           void setRegista(string valore);
           void setAnnouscita(int valore);
           void setRemake(bool valore);
           string getAttori();
           string getTitolo();
           string getRegista();
           int getAnnouscita();
           bool isRemake();
           string getOriginale();
           string getRemake();
           void FissaOriginale(Node<Film> film, Node<Film> remake);
};



#endif	/* FILM_HPP */