class Cube
{
public:
Cube();
//bool hasSon; <- not needed, initialize the pointer and you can use that to test.
Cube* son;
void setSon(Cube* son);
void draw();
};
Cube::Cube() : son(nullptr)
{}
void Cube::setSon(Cube* s)
{
son = s;
}
void Cube::draw()
{
if(son)
son->draw();
}
int main()
{
Cube* base = new Cube();
Cube* base2 = new Cube();
base->setSon(base2);
base->draw();
}
Y2xhc3MgQ3ViZQp7CnB1YmxpYzoKICAgIEN1YmUoKTsKICAgIC8vYm9vbCBoYXNTb247IDwtIG5vdCBuZWVkZWQsIGluaXRpYWxpemUgdGhlIHBvaW50ZXIgYW5kIHlvdSBjYW4gdXNlIHRoYXQgdG8gdGVzdC4KICAgIEN1YmUqIHNvbjsKICAgIHZvaWQgc2V0U29uKEN1YmUqIHNvbik7CiAgICB2b2lkIGRyYXcoKTsKfTsKCkN1YmU6OkN1YmUoKSA6IHNvbihudWxscHRyKQp7fQoKdm9pZCBDdWJlOjpzZXRTb24oQ3ViZSogcykKewogICAgc29uID0gczsKfQoKdm9pZCBDdWJlOjpkcmF3KCkgCnsKCWlmKHNvbikgCgkJc29uLT5kcmF3KCk7Cn0KCgppbnQgbWFpbigpCnsKCUN1YmUqIGJhc2UgPSBuZXcgQ3ViZSgpOwoJQ3ViZSogYmFzZTIgPSBuZXcgQ3ViZSgpOwoJYmFzZS0+c2V0U29uKGJhc2UyKTsKCWJhc2UtPmRyYXcoKTsKfQ==