将一个枚举映射到另一个枚举

ont*_*cks 5 c++ enums

存在一个现有的枚举

typedef enum
{
    myEnum_front = 11,
    myEnum_back = 19
} myEnumSides;
Run Code Online (Sandbox Code Playgroud)

我想创建另一个枚举new_myEnumSides,它的值应该映射到 的值myEnumSides。从今往后,我将使用new_myEnumSides而不是myEnumSides. 下面的代码可以用于此目的吗?

typedef enum
{
    new_myEnum_front = myEnumSides::myEnum_front,
    new_myEnum_back = myEnumSides::myEnum_back
} new_myEnumSides;
Run Code Online (Sandbox Code Playgroud)

或者,还有更好的方法?

Sin*_*all 1

我无法想象为什么你需要这样做......如果你不需要重命名枚举的值,你可以只创建第一个变量的另一个变量,而不添加另一个枚举(我相信这不是你的案例,但还是要指出这个机会):

typedef enum
{
    myEnum_front = 11,
    myEnum_back = 19
} myEnumSides, new_myEnumSides;//<-- just add the new variable here
Run Code Online (Sandbox Code Playgroud)

如果您确实想重命名它(我相信这就是您的情况),您不应该使用运算::符,而只需编写:

typedef enum
{
    myEnum_front = 11,
    myEnum_back = 19
} myEnumSides;

typedef enum
{
    new_myEnum_front = myEnum_front,
    new_myEnum_back = myEnum_back
} new_myEnumSides;
Run Code Online (Sandbox Code Playgroud)

::仅当枚举位于类、结构或命名空间内时才应使用该运算符,否则::不需要。