Проблема с областью видимости, при возвращение встроенного класса
Решил написать связный список. У меня есть встроенный класс Node и private функция в самом списке getNode(), которая возвращает Node*. Так вот при определение этой функции вне класса получаю миллион разных ошибок. Подскажите пожалуйста что исправить.
P.S остальные методы определены и корректно компилируются
template <typename T>
class DoubleLinkedList
{
public:
bool add(const T& value);
bool remove(const size_t index);
bool insert(const size_t index, const T& value);
T get(const size_t);
size_t getSize();
bool isEmpty();
T operator [] (const size_t index);
DoubleLinkedList() :head(new Node()), tail(head), size(0) {}
~DoubleLinkedList();
class Node
{
public:
T data;
Node* prevNode;
Node* nextNode;
Node() :prevNode(nullptr), nextNode(nullptr) {}
Node(const T& data, Node* tail)
{
tail->nextNode = this;
this->data = data;
this->prevNode = tail;
this->nextNode = nullptr;
}
};
private:
Node* head;
Node* tail;
size_t size;
Node* getNodeByIndex(size_t);
};
template <typename T>
DoubleLinkedList<T>::Node* DoubleLinkedList<T>::getNodeByIndex(size_t index)
{
if (index < 0 || index >= size)
throw out_of_range("Error: Out of range\n");
Node* currentNode;
if (index < size / 2)
{
currentNode = head;
size_t currentIndex = 0;
while (currentIndex != index)
{
currentNode = currentNode->nextNode;
currentIndex++;
}
}
else
{
currentNode = tail;
size_t currentIndex = size - 1;
while (currentIndex != index)
{
currentNode = currentNode->prevNode;
currentIndex--;
}
}
return currentNode;
}
