码迷,mamicode.com
首页 > 编程语言 > 详细

c++ anonymous union,struct -- 匿名联合体和机构体

时间:2015-09-04 07:19:01      阅读:1257      评论:0      收藏:0      [点我收藏+]

标签:

c++ anonymous union,struct -- 匿名联合体和机构体

结构体和联合体各自的基本用法不赘述,仅说一下他们匿名时访问的情况。如果是token不同,可以直接跨层访问。例子

  1. #include <iostream>
  2. using namespace std;
  3. struct zoo_obj{
  4.         string name;
  5.         union {
  6.                 unsigned int property;
  7.                 struct{ //plant
  8.                         unsigned int
  9.                                 hasLeaf:1,
  10.                                 hasFlower:1,
  11.                                 hasTrunk:1,
  12.                                 hasRattan:1;
  13.                 };
  14.                 struct { //animal
  15.                         unsigned int
  16.                                 isBackbone:1,
  17.                                 isOvipara:1,
  18.                                 hasLags:1,
  19.                                 hasWing:1;
  20.                 };
  21.         };
  22. };
  23. int main(void)
  24. {
  25.         zoo_obj peony = {"peony",0};
  26.         zoo_obj dog = {name:"dog",0};
  27.         dog.hasLags = true;
  28.         /* zoo_obj dog = {name:"dog",property:0};
  29.          * sorry, unimplemented: non-trivial designated initializers
  30.          * not supported
  31.          */
  32.         cout << peony.name << " hasLeaf " << peony.hasLeaf << endl;
  33.         cout << dog.name << " hasLags " << dog.hasLags << endl;
  34. }
输出
  1. peony hasLeaf 0
  2. dog hasLags 1
不支持像列子中name样的指定访问。如果指定了会报错
  1. sorry, unimplemented: non-trivial designated initializers not supported
 
 

c++ anonymous union,struct -- 匿名联合体和机构体

标签:

原文地址:http://www.cnblogs.com/timdes/p/4781109.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!