Добавление значений в перечисление C++C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Добавление значений в перечисление C++

Сообщение Anonymous »

Предположим, у меня есть следующий код в другой библиотеке, который я не могу изменить:

Код: Выделить всё

typedef enum {
p0  = 0,
p1  = 1,
p2  = 2,
p3  = 3,
p4  = 4,
p5  = 5,
p6  = 6,
...
} PinName;
Я хочу добавить несколько дополнительных псевдонимов, подобных этому (не использовать const PinName PIN_...):

Код: Выделить всё

enum class : PinName {
PIN_SD_MOSI = p0,
PIN_SD_MISO = p4,
PIN_SD_SCK = p2,
PIN_SD_CSN = p6,
};
Но это не работает. Я получаю следующую ошибку:

Код: Выделить всё

error: underlying type 'PinName' of '' must be an integral type
enum class : PinName {
^
Я также пробовал использовать класс перечисления: int {, но тогда псевдонимы никогда не попадают в область видимости — подозреваю, что вместо этого мне придется использовать простое перечисление . enum : int компилируется, но тогда вы не сможете передать ни один из псевдонимов функциям, которые принимают PinName. Вы получаете эту ошибку:

Код: Выделить всё

error: no matching function for call to 'foo(, )'
foo(PIN_SD_MISO, PIN_SD_MOSI);
^
(Кандидат — foo(PinName, PinName).)

Есть ли у кого-нибудь идеи хорошего решения, прежде чем я сдамся и использую const PinName PIN_SD_MISO = p2;?

Подробнее здесь: https://stackoverflow.com/questions/343 ... o-a-c-enum
Ответить

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

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

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

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

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