C++结构体内嵌套共用体,怎么声明该对象

C++结构体内嵌套共用体,如何声明该对象?
#include <iostream>
#include <string>
struct information//声明结构体
{
char name[20];
unsigned int age;
char sex[4];
union id//声明共用体
{
char uc_id[20];
unsigned int uu_id;
};
};
int main()
{
using namespace std;
information make;
strcpy_s(make.name, "job");
cout << make.name << endl;
cin.get();
return 0;
}


我只知道可以在共用体后面加上对象名,然后以 结构体对象名.共用体对象名.成员 这种方式调用。
想问下还有没有其他的方式进行定义?
 
------解决方案--------------------
struct information//声明结构体
{
    char name[20];
    unsigned int age;
    char sex[4];
    union//声明共用体
    {
        char uc_id[20];
        unsigned int uu_id;
    };
};

酱紫,然后用xxx.uc_id访问
------解决方案--------------------
http://baike.baidu.com/link?url=05Oc5t_nR9muhPavpG7RjUUxVC8a6Wq4Vx3QWGFr5tHqCgOmb2iFAj2xSVA4VPnA6itreEwFcG2pupw873qOBa
------解决方案--------------------
C++无名公用体,无名结构的用法,了解一下吧
------解决方案--------------------
作用域内部(函数,名空间,类,结构。。。。)的匿名结构体,共用体(没有定义相应的变量,只有类型定义,也不是在typedef 语句中)的作用
和直接定义和结构体公用体的,各个域,同名的变量,效果相似,
不过公用体,各域公用内存
结构体各域,按照结构的对齐方式,顺序排列各域.


例如

class A{
public :
struct {
int x,y;
};
union {
      double a,b;
};


void init(int x0,int y0,int a0){
         x=x0,y=y0;a=a0;
} ;

void print(){
     printf("x=%d,y=%d,a=%lgb=%lg\n",x,y,a,b);
};      


};

int main(){
union{
int x,y;//域变量 x,y 会暴露在外层作用域,可以看作外层作用域中,共享内存的两个变量名字。
};

x=10;
printf("x=%d,y=%d",x,y); //输出 x=10,y=10 
//匿名结构体,共用体由于没有名字,不能用来定义该结构体,共用体类型的变量,除非是在
//typedef 语句中.

 A a;
a.init(10,9,8.76);
a.print();
//输出 x=10,y=9,a=8.76,b=8.76

//直接用匿名结构体,共用体定义(变量)对象。
union{
int ux,uy;
}u = {10};//ux,uy 不再能够,看成是变量名了
printf("ux=%d,uy=%d\n",u.ux,u.uy);

getchar();
return 0;
}

PS:
匿名结构体,共用体,不能拿来额外定义(变量)对象,因为没有类型名字可用。
唯一可以定义的时候是, 
直接用匿名结构体,共用体定义(变量)对象。//此时内部名字不再直接暴露在外部作用域了。

匿名结构体,共用体另一个作用,是 typedef一个类型名字。
为了避免多用一个名字,结构体,共用体就不命名了
------解决方案--------------------
直接在匿名结构体,共用体定义定义的地方,用匿名结构体,共用体定义(变量)对象。
//此时内部名字,不再直接暴露在外部作用域了。