#include <iostream>
class Child {
private:
std::string name;
public:
void setName(std::string name) { this->name = name; }
std::string getName() { return this->name; }
};
class Parent {
private:
Child child;
public:
Child getChild1() { return this->child; }
Child *getChild2() { return &(this->child); }
Child &getChild3() { return this->child; }
};
int main() {
Parent parent1;
parent1.getChild1().setName("ko");
std::cout << "1: " << parent1.getChild1().getName()<< std::endl;
Parent parent2;
(parent2.getChild2())->setName("ko");
std::cout << "2: " << parent2.getChild1().getName()<< std::endl;
Parent parent3;
parent3.getChild3().setName("ko");
std::cout << "3: " << parent3.getChild1().getName()<< std::endl;
}
/* end */
I2luY2x1ZGUgPGlvc3RyZWFtPgoKY2xhc3MgQ2hpbGQgewpwcml2YXRlOgogIHN0ZDo6c3RyaW5nIG5hbWU7CnB1YmxpYzoKICB2b2lkIHNldE5hbWUoc3RkOjpzdHJpbmcgbmFtZSkgeyB0aGlzLT5uYW1lID0gbmFtZTsgfQogIHN0ZDo6c3RyaW5nIGdldE5hbWUoKSB7IHJldHVybiB0aGlzLT5uYW1lOyB9Cn07CgpjbGFzcyBQYXJlbnQgewpwcml2YXRlOgogIENoaWxkIGNoaWxkOwpwdWJsaWM6CiAgQ2hpbGQgZ2V0Q2hpbGQxKCkgeyByZXR1cm4gdGhpcy0+Y2hpbGQ7IH0KICBDaGlsZCAqZ2V0Q2hpbGQyKCkgeyByZXR1cm4gJih0aGlzLT5jaGlsZCk7IH0KICBDaGlsZCAmZ2V0Q2hpbGQzKCkgeyByZXR1cm4gdGhpcy0+Y2hpbGQ7IH0KfTsKCmludCBtYWluKCkgewogIFBhcmVudCBwYXJlbnQxOwogIHBhcmVudDEuZ2V0Q2hpbGQxKCkuc2V0TmFtZSgia28iKTsKICBzdGQ6OmNvdXQgPDwgIjE6ICIgPDwgcGFyZW50MS5nZXRDaGlsZDEoKS5nZXROYW1lKCk8PCBzdGQ6OmVuZGw7CgogIFBhcmVudCBwYXJlbnQyOwogIChwYXJlbnQyLmdldENoaWxkMigpKS0+c2V0TmFtZSgia28iKTsKICBzdGQ6OmNvdXQgPDwgIjI6ICIgPDwgcGFyZW50Mi5nZXRDaGlsZDEoKS5nZXROYW1lKCk8PCBzdGQ6OmVuZGw7CiAgCiAgUGFyZW50IHBhcmVudDM7CiAgcGFyZW50My5nZXRDaGlsZDMoKS5zZXROYW1lKCJrbyIpOwogIHN0ZDo6Y291dCA8PCAiMzogIiA8PCBwYXJlbnQzLmdldENoaWxkMSgpLmdldE5hbWUoKTw8IHN0ZDo6ZW5kbDsKfQovKiBlbmQgKi8K