#include <iostream>

class A {
public:
	int a;
	A(int a) : a(a) {}
};


class B {
public:
	B(A *a) : a(*a) {}
	int getA() {return a.a;}
private:
	A &a;
};

int main() {
	// your code goes here
	A *a = new A{666};
	
	B b{a};
	
	a->a = 777;
	
	std::cout << b.getA();
	
	return 0;
}