将enum(在struct中声明)值分配给struct中相同枚举类型的变量

时间:2014-05-12 10:23:12

标签: c++ c struct enums

我有一个类型

的结构
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 个答案:

答案 0 :(得分:1)

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