#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.getChild2())->getName()<< std::endl;
  
  Parent parent3;
  parent3.getChild3().setName("ko");
  std::cout << "3: " << parent3.getChild3().getName()<< std::endl;
}
/* end */
