#define CLASS(NAME) \
class NAME { \
public: \
struct Inner; \
Inner *i = nullptr; \
}; \
NAME::Inner &getInner##NAME();
CLASS(A)
CLASS(B)
CLASS(C)
CLASS(D)
CLASS(E)
CLASS(F)
CLASS(G)
int main()
{
A::Inner &inner_a = getInnerA();
B::Inner &inner_b = getInnerB();
C::Inner &inner_c = getInnerC();
D::Inner &inner_d = getInnerD();
E::Inner &inner_e = getInnerE();
F::Inner &inner_f = getInnerF();
G::Inner &inner_g = getInnerG();
return 0; // break here
}