将枚举(在结构体内部声明的)值赋给结构体内部相同枚举类型的变量

Assign enum(declared inside a struct) value to a variable of the same enum type inside the struct

本文关键字:内部 结构体 枚举 类型 变量 声明      更新时间:2023-10-16

我有一个结构体类型为

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

1) zero不是struct的成员。2) struct中的enum没有声明任何成员。它可以在任何地方声明。枚举成员被命名为常量,它们不是变量,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;