Не понимаю почему возникает ошибка
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х местах(пометил комментарием), почему то не дает изменить возвращаемый указатель, пишет что объект не допустим для изменения как левостороннее значение.