我有以下类型的结构
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;
关于c++ - 将枚举(在结构内声明)值分配给结构内相同枚举类型的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23606516/