Есть ли способ в C ++ иметь рамки Enum, содержащий несколько представлений?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Есть ли способ в C ++ иметь рамки Enum, содержащий несколько представлений?

Сообщение Anonymous »

Есть ли способ объявить об перечислении, которое имеет несколько представлений, например, числовая и строка? < /p>
Цель здесь состоит в который имеет 2 разных представления, числовое и строку. Любое представление является достоверным и уникальным для перечисления. /code> и alphacode представляют 2 представления enum. enum class Foo {
Value01 { 001, "aa" },
Value02 { 002, "bb" },
.....
ValueN. { nn, "zz" };
private:
Foo( int numeric, const string alpha ) : numericCode( numeric ), alphaCode( alpha ) {}
private:
int numericCode;
string alphaCode;
};

< /code>
Обоснование для этого состоит в том, чтобы избежать общей конструкции выполнения строки или числовых сравнений для определения перечисленного случая; Избегайте нескольких символов для волшебных чисел между ситуационно удобными компиляционными единицами, или трудно поддерживать жестко закодированные магические числа во всей кодовой базе и т. Д. Есть несколько кодов, которые представляют страну; 2-характерная альфа, 3-символьная альфа и 3-значный номер. Каждый код однозначно представляет конкретное перечисленное значение, в то время как несколько представлений могут однозначно идентифицировать одно перечисленное значение. Class = "Lang-Java PrettyPrint-Override">public enum Foo {
Value01 ( 001, "aa" ),
Value02 ( 002, "bb" ),
ValueNN ( 999, "zz" );

private final int numericCode;
private final String alphaCode;

Foo( final int numeric, final String alpha ) {
numericCode = numeric;
alphaCode = alpha;
}

public String getAlpha() {
return alphaCode;
}

public int getNumeric() {
return numericCode;
}
}
< /code>
Я пытался сделать псевдод в вопросе. Я реализовал это в Java несколько раз.

Подробнее здесь: https://stackoverflow.com/questions/794 ... sentations
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»