typedef int HANDLE;
class Item
{
private:
mutable HANDLE Parent;
public:
Item(const Item &I) = delete;
Item(Item &&I) = delete;
void SetParent(HANDLE Handle) const;
Item& operator = (const Item &I) = delete;
Item& operator = (Item &&I);
};
void Item::SetParent(HANDLE Handle) const
{
this->Parent = Handle;
}
class Box
{
private:
HANDLE Handle;
public:
void Add(const Item &I);
public:
Box(const Item &I) {
Add(I);
}
};
void Box::Add(const Item &I)
{
I.SetParent(this->Handle); //Error.. Item I is const.
}
int main(void) {
return 0;
}
dHlwZWRlZiBpbnQgSEFORExFOwoKY2xhc3MgSXRlbQp7CiAgICBwcml2YXRlOgogICAgICAgIG11dGFibGUgSEFORExFIFBhcmVudDsKCiAgICBwdWJsaWM6CiAgICAgICAgSXRlbShjb25zdCBJdGVtICZJKSA9IGRlbGV0ZTsKICAgICAgICBJdGVtKEl0ZW0gJiZJKSA9IGRlbGV0ZTsKICAgICAgICB2b2lkIFNldFBhcmVudChIQU5ETEUgSGFuZGxlKSBjb25zdDsKCiAgICAgICAgSXRlbSYgb3BlcmF0b3IgPSAoY29uc3QgSXRlbSAmSSkgPSBkZWxldGU7CiAgICAgICAgSXRlbSYgb3BlcmF0b3IgPSAoSXRlbSAmJkkpOwp9OwoKdm9pZCBJdGVtOjpTZXRQYXJlbnQoSEFORExFIEhhbmRsZSkgY29uc3QKewogICAgdGhpcy0+UGFyZW50ID0gSGFuZGxlOwp9CgpjbGFzcyBCb3gKewogICAgcHJpdmF0ZToKICAgICAgICBIQU5ETEUgSGFuZGxlOwoKICAgIHB1YmxpYzoKICAgICAgICB2b2lkIEFkZChjb25zdCBJdGVtICZJKTsKICAgIHB1YmxpYzoKICAgICAgICAgQm94KGNvbnN0IEl0ZW0gJkkpIHsKICAgICAgICAgICAgQWRkKEkpOwogICAgICAgICB9Cn07Cgp2b2lkIEJveDo6QWRkKGNvbnN0IEl0ZW0gJkkpCnsKICAgIEkuU2V0UGFyZW50KHRoaXMtPkhhbmRsZSk7ICAgLy9FcnJvci4uIEl0ZW0gSSBpcyBjb25zdC4KfQoKaW50IG1haW4odm9pZCkgewogICAgcmV0dXJuIDA7Cn0=