C++ List При срабатвании метода push_back() к data присваивается 0

Не срабатывает функция push_back()

template<typename T>
class List {
public:
    List();
    ~List();
    void push_back(T data);
    void pop(int index);
    void insert(T value, int index);
    void swaptwo();//8
    void addten();//5
    int oddcol();//2
    size_t getSize() { return size; }
    T& operator[](const int index);
private:
    template<typename T>
    class Node {
    public:
        Node* next;
        T data;
        Node(T data, Node* next = nullptr){
            this->data;
            this->next;
        }
    };
    Node<T> *head;
    size_t size;

};

template<typename T>
inline List<T>::List() :size(0), head(nullptr) {}

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

template<typename T>
inline void List<T>::push_back(T data)
{
    try {
        if (head == nullptr) {
            this->head = new Node<T>(data);
        }
        else {
            Node<T> *current = this -> head;
            while (current->next != nullptr) {
                current = current->next;
            }
            current->next = new Node<T>(data);
        }
        size++;
    }
    catch (bad_alloc) {
        cout << "bad_alloc catched\n";
    }
}

После вызова в main() поле data становиться NULL

int main()
{
    List<int> list;
    list.push_back(5);
    list.push_back(5);
    list.push_back(5);
    return 0;
}

list после выполнения функций:

list    {head=0x0127e9a0 {next=0x0127e8f8 {next=0x0127e5e8 {next=0x00000000 <NULL> data=0 } data=0 } data=0 } ...}  List<int>

Почему data присваиваеться 0?


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

Автор решения: KoVadim

ошибка в конструкторе. Он должен быть хотя бы таким

    Node(T data, Node* next = nullptr){
        this->data = data;
        this->next = next;
    }
→ Ссылка