Почему не заходит в условие?
#pragma once
#include <utility>
#include <iostream>
template <typename T>
class Deque{
struct Data{
Data* next;
Data* previous;
T info;
};
public:
Deque(){
this->right = nullptr;
this->left = nullptr;
}
void push_back(T element){
Data* ref = new Data{
nullptr,
right,
std::move(element)
};
if(this->left == nullptr && this->right == nullptr){
this->left == ref;
}else{
this->right->next = ref;
}
this->right = ref;
}
T pop_back(){
T t = std::move(this->right->info);
Data* ref = this->right;
this->right = this->right->previous;
this->right->next = nullptr;
delete ref;
return t;
}
private:
Data* left;
Data* right;
};
Почему в методе push_back не выполняется условие:
if(this->left == nullptr && this->right == nullptr)
В самом начале, когда я добавляю первый элемент в контейнер, поля left и right инициализированы nullptr. Но условие все равно не проходит.
Ответы (1 шт):
Автор решения: ivan
→ Ссылка
это причина
this->left == ref;
компилятор просто пропускает эту строку
нужно было написать
this->left = ref;