Не понимаю почему возникает ошибка

class Elem
{
    Ochered* x = 0;
    int* y = 0;
public:
    Elem(int* a = 0, Ochered* b = 0)
    {
        y = a;
        x = b;
    }
    int* inf() const
    {
        return y;
    }
    Ochered* next()
    {
        return x;
    }
    ~Elem()
    {
        delete y;
        x = 0;
    }
    Ochered friend;
};

class Ochered
{
    Elem* z= 0;
    Ochered (const Ochered& a)
    {
        z = a.z;
    }
public:
    int* inf() const
    {
        return z->inf();
    }
    Ochered* next()
    {
        return z->next();
    }
    Ochered(int a)
    {
        int* y = new int;
        y = &a;
        z=new Elem(y,this);
    }
    ~Ochered()
    {
        delete z;
    }
    void move()
    {
        z = next()->z;
    }
    void add(int a)
    {
        Ochered e(a);
        e.next() = next();//
        next() = e.z;//
    }
    const Ochered& Poiskel(Ochered& a) 
    {
        if (a.next() == this)
            return a;
        else
            return next()->Poiskel(a);
    }
    void del()
    {
        if (next() != 0)
        {
            Ochered a = Poiskel(*this);
            a.next() = next();//
            delete this;
        }
        delete this;
    }
    void udalenie() 
    {
        if (z != 0)
        {
            Ochered* a = next();
            del();
            a->udalenie();
        }
    }
};

ошибка возникает в 3х местах(пометил комментарием), почему то не дает изменить возвращаемый указатель, пишет что объект не допустим для изменения как левостороннее значение.


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