Существует существующий enum
typedef enum
{
myEnum_front = 11,
myEnum_back = 19
} myEnumSides;
Я хочу создать другое перечисление new_myEnumSides
и его значения должны быть сопоставлены со значениями myEnumSides
, Следовательно, далее я буду использовать new_myEnumSides
вместо myEnumSides
,
Код ниже в порядке для этой цели?
typedef enum
{
new_myEnum_front = myEnumSides::myEnum_front,
new_myEnum_back = myEnumSides::myEnum_back
} new_myEnumSides;
Или есть лучший способ?
Я не могу себе представить Зачем вам нужно сделать это … Если вам не нужно переименовать значения перечисления, вы можете просто сделать еще одну переменную из первого, не добавляя другое перечисление (я считаю, что это не ваш случай, но все же должны указать на эту возможность):
typedef enum
{
myEnum_front = 11,
myEnum_back = 19
} myEnumSides, new_myEnumSides;//<-- just add the new variable here
если ты делать хочу переименовать его (что я считаю, является ваш случай), вы должны не использовать ::
оператор, но просто напишите:
typedef enum
{
myEnum_front = 11,
myEnum_back = 19
} myEnumSides;
typedef enum
{
new_myEnum_front = myEnum_front,
new_myEnum_back = myEnum_back
} new_myEnumSides;
::
Оператор должен использоваться, только если enum находится внутри класса, структуры или пространства имен, в противном случае нет ::
нужно.
Единственная причина, по которой я могу представить, что ты хочешь это сделать, это простираться существующий enum
и создайте новый с дополнительными значениями.
Как enum
не предлагает никакой формы наследования, будучи константами времени компиляции и на самом деле просто целыми числами, вы мог сделать что-то вроде этого, хотя я не особенно рекомендую это ..
// internalEnums.h
myEnum_front = 11,
myEnum_back = 19
// customerEnums.h
someNewValue = 20,
someOtherNewValue = 21
// Wherever you want to define your enums
typedef enum
{
#include "customerEnums.h"} customerAccessible;
typedef enum
{
#include "internalEnums.h"#include "customerEnums.h"} internalUseOnly;
// Now there are two enumerations, sharing items.
customerAccessible::someNewValue // 11
customerAccessible::myEnum_front; // Doesn't exist
РЕДАКТИРОВАТЬ Согласно вашему комментарию, вы можете предоставить перечисления клиенту, сохранив значения в заголовке специально для внешнего использования.