我有一个类型
的结构struct enumStruct
{
enum Number
{
zero = 0,
one = 1
};
Number t;
union
{
/* t = 0 */
some_struct_zero zero;
/* t = 1 */
some_struct_one one;
} un;
} v_enumStruct;
我可以将值分配给v_enumStruct.t
,如下所示吗?
v_enumStruct.t = v_enumStruct.zero;//Option 1
此外,以下似乎不起作用
v_enumStruct.t = zero; //Option 2 - zero is mistaken as an unavailable variable name
答案 0 :(得分:1)
1)zero
不是struct
的成员。 2)enum
内struct
未声明任何成员。它可以在任何地方声明。枚举成员被命名为常量,它们不是变量,3)Number
需要enum
限定符:
struct enumStruct
{
enum Number
{
zero = 0,
one = 1
};
enum Number t;
union
{
/* t = 0 */
some_struct_zero zero;
/* t = 1 */
some_struct_one one;
} un;
} v_enumStruct;
您也可以将enum Number { ..};
移到struct
之外,因为它在结构中没有做任何事情。现在你应该能够分配:
v_enumStruct.t = zero;