Проблема с преобразованием
Я пишу реализацию односвязного списка и столкнулся с проблемой. Проблема состоит в методе 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;
}
Источник: Stack Overflow на русском