#include <iostream>

class Inner
{
  public:
  int x;
  Inner()
  {
    std::cout << "Inner (no params)" << std::endl;
  }
  Inner(int _x) : x(_x)
  {
    std::cout << "inner (param "<<x <<" )"<<std::endl;
  }
};
class Outer
{
  public:
  Inner i;
  Outer(Inner _i)
  {
    i = _i;
    std::cout << "Outer" << std::endl;
  }
};
class CorrectOuter
{
  public:
  Inner i;
  CorrectOuter(Inner _i) : i (_i)
  {
    std::cout << "CorrectOuter" << std::endl;  }
};
int main()
{
  Inner i(3);
  Outer o(i);
  CorrectOuter co(i);
}