List
- это шаблон класса, поэтому вы должны объявить его в объявлении своего друга
template<typename ListType>
friend class List;
Если вы хотите, чтобы List<NodeType>
был другом, вам нужно сообщить ему, чтоаргумент шаблона, поэтому объявление друга становится
friend class List<NodeType>;
. Чтобы это работало, нужно знать, что List
существует как шаблон класса, поэтому вам нужно объявить его вперед в начале Node.hpp
:
template<typename ListType>
class List;