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 */