Bonjour à tous

j'ai un problème de compilation d'un projet dont je dois prendre la suite. Je fais la compilation avec g++, sous linux.

Toutes les erreurs interviennent dans deux fichiers *.hpp qui contiennent les déclarations et les définitions de classes templates. Il n'y a pas de templates dans le reste du code, donc je pense que ça vient de là.

g++ -Wno-non-template-friend -O4 -c -o Component.o Component.cpp
In file included from /usr/include/c++/4.2/backward/iostream.h:31,
from Component.cpp:3:
/usr/include/c++/4.2/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.
In file included from Array1D.hpp:19,
from HashTable.hpp:16,
from Component.cpp:7:
Exception.h: In constructor ‘Exception::Exception()’:
Exception.h:20: warning: deprecated conversion from string constant to ‘char*’
In file included from HashTable.hpp:18,
from Component.cpp:7:
List.hpp: In destructor ‘List<T>::~List()’:
List.hpp:101: error: ‘head’ was not declared in this scope
List.hpp: In constructor ‘List<T>::List()’:
List.hpp:251: error: ‘head’ was not declared in this scope
List.hpp:251: error: ‘curr’ was not declared in this scope
List.hpp:251: error: expected type-specifier before ‘Link’
List.hpp:251: error: expected `;' before ‘Link’
List.hpp: In copy constructor ‘List<T>::List(const List<T>&)’:
List.hpp:260: error: ‘head’ was not declared in this scope
List.hpp:260: error: ‘curr’ was not declared in this scope
List.hpp:260: error: expected type-specifier before ‘Link’
List.hpp:260: error: expected `;' before ‘Link’
List.hpp: In member function ‘List<T>& List<T>::operator+=(const List<T>&)’:
List.hpp:300: error: there are no arguments to ‘end’ that depend on a template parameter, so a declaration of ‘end’ must be available
List.hpp:300: error: (if you use ‘-fpermissive’, G++ will accept your code, but allowing the use of an undeclared name is deprecated)
Je crois comprendre que les erreurs viennent de mauvaises définitions de certaines variables, mais je vois pas comment les résoudre.
Est-ce que ca vient du fait que les classes sont définies et déclarées dans le même fichiers? Est ce qu'il me manque des librairies?