In
template<class T>
struct Node* LinkedList<T>::getNode() // Error
{
return head;
}
Node
имеет значение LinkedList<T>
.Поскольку вы не находитесь в списке параметров функции или в теле функции, неквалифицированный Node
недоступен для использования.Вы должны указать имя, используя LinkedList<T>::Node
, чтобы сообщить компилятору, что вы используете LinkedList<T>
Node
.При этом вам также необходимо использовать ключевое слово typename
, поскольку Node
является зависимым именем.Это означает, что вам нужно:
template<class T>
typename LinkedList<T>::Node* LinkedList<T>::getNode()
{
return head;
}
Или вы можете использовать конечный тип возврата и использовать
template<class T>
auto LinkedList<T>::getNode() -> Node*
{
return head;
}
, чтобы сэкономить при вводе всего этого.
Также обратите внимание, что вам не нужно использовать struct
, когда вы используете имя struct
.Это требуется в C, но не требуется в C ++.