Проблема с преобразованием

Рейтинг: 0Ответов: 0Опубликовано: 04.02.2023

Я пишу реализацию односвязного списка и столкнулся с проблемой. Проблема состоит в методе void List<T>::push_back(T date), в нем выскакивают две ошибка:
Ошибка C2440 =: невозможно преобразовать "List::Node *" в "T *"
Ошибка C2440 =: невозможно преобразовать "T *" в "List::Node *".
В интернете нашел решение проблемы с помощью оператора reinterpret_cast, но ни как не пойму как его использовать в коде.

#include <iostream>
template<typename T>
class List {
public:
    List();
    ~List();
    void push_back(T date);
    int GetSize() { return size; }
private:
    template<typename T>
    class Node{
    public:
        T* pNext;
        T date;
        Node(T date = T(), T* pNext = nullptr) {
            this->date = date;
            this->pNext = pNext;
    }
    };
    Node<T> *head;
    int size;
};

template<typename T>
List<T>::List() {
    head = nullptr;
    size = 0;
}

template<typename T>
List<T>::~List() {

}

template<typename T>
void List<T>::push_back(T date) {
    if (head == nullptr) {
        head = new Node<T>(date);
    }
    else {
        Node<T> *current = this->head;
        while (current->pNext!=nullptr) {

            current = current->pNext;
        }
        current->pNext = new  Node<T>(date);
        

    }
    size++;
}

int main() {
    List <int> lst;
    lst.push_back(5);
    lst.push_back(10);
    lst.push_back(15);
    std::cout << lst.GetSize();
    return 0;
}

Ответы

Ответов пока нет.