Почему не заходит в условие?

#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;
→ Ссылка