I dont know exactly what you are trying to achieve. But in C (not sure about C++), you cannot initialize a struct member whilst the defining of structure type is not complete. What this means is you cannot assign my_a.id a value untill you define a struct variable (b_t my_b in my example below). The compiler has not set aside any memory for the struct until you define it a varible (not a type).
Code:
typedef struct a{
int id;
} a_t;
typedef struct b
{
a_t my_a;
} b_t;
int main(void)
{
b_t my_b; //definition of structure of type b_t with varible my_b;
//From this line and onwards the compiler has set aside memory for the struct.
my_b.my_a.id = 1;
printf("Value of my_b.my_a.id: %d", my_b.my_a.id);
return 0;
}