c++ - 将枚举(在结构内声明)值分配给结构内相同枚举类型的变量

标签 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) 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/

相关文章:

c++ - 有关类数组和new运算符用法的C++语法

c++priority_queuepush/emplace,无需创建临时对象

c - 在 Linux 中,内核时间存储在内存中的什么位置?

c++ - 为结构体中的 char* 赋值

c++ - Struct 中具有多个标记名称的构造函数 (C++)

c# - 当结构是在 C# 中转换的泛型对象的协变类型时,结构无法转换为对象的任何解决方法?

c++ - 使用 ReadProcessMemory 读取 std::map<string, string>

c++ - 字节顺序如何影响 C++ 中的枚举值?

c - 有没有一种快速的方法可以在字符串之间插入一个字符?

非阻塞 UDP 写入返回的字节数能否少于请求的字节数?