Видимость вложенного класса

У меня есть класс List и вложенный класс Node(на методы и поля не обращайте внимания)

template<typename T>
class List
{
public:
    List();

    void push_back(T data);
    void lin();

    int size() { return Size; }

    T& operator[](const int index);
private:
    template<typename T>
    class Node {
    public:
        Node* pNext;
        T data;
        Node(T data = T(), Node* pNext = nullptr) {
            this->data = data;
            this->pNext = pNext;
        }
    };
    int Size;
    Node<T>* Top;
};

Я создаю функцию firstTask и хочу создать указатель типа Node

void firstTask(List<T>list1, List<T>list2) {
    List<T> temp;
    temp = list1;
    Node* P1 = list1.Top;
}

Но функция не видит этот класс. Как мне сделать его видимым?


Ответы (1 шт):

Автор решения: Harry
typename List<T>::Node* P1 = list1.Top;

Только у вас Node - он таки шаблонный или нет? Т.е. может ли внутри List<int> быть, скажем, Node<double>? Если нет - не нужно его делать шаблоном внутри шаблона.

→ Ссылка