#include <iostream>

class A {
};

struct S {
  A* a;
  S(A* c) { a = c; }
};

class B {
  public:
    B(S* s){ s_ = s; }
    S* get_s() {return s_;}
  private:
    S* s_;
};

int main() {
  A* a = new A();
  S* s = new S(a);
  B b =  B(s);

  std::cout << "a in A = " << a << "\n";
  std::cout << "a in S = " << s->a << "\n"; 
  std::cout << "a in B = " << b.get_s()->a << "\n";

  //output:
  // a in A = 0x7ffe81376918
  // a in S = 0x2563e90
  // a in B = 0x2563e90
}