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;
}