что-то я действительно не понял. но я понял то, что Вы это сами не писали 😉
Написал. Компилятор выдал ошибку
Error[Pe101]: "EN0" has already been declared in the current scope (�Hat line 32�h) myFile.cpp 36
Error[Pe101]: "EN1" has already been declared in the current scope (�Hat line 32�h) myFile.cpp 36
написал. И что? Что с этим дальше делать? Вы предлагаете int инициализировать типом A. А зачем?
Теперь то, о чем я говорил. Допустим есть некий порог температуры.
Автор программы библиотеки задает эту константу так:
#define FROST 10
либо так
enum {FORST = 10};
Сделал, отдал в продакшин.
Теперь прикладной программист пишет свой код с использованием вашей библиотеки
int temperature = FORST; //вот тут какая разница как в FORST попала 10? Тут прогер должен понимать, что создалась переменная типа int, и она инициализировалась значением 10. Это Эквивалент записи int temperature = 10;
ps даже если очень жжет использовать enum class, очень хочется, но не хотите при каждом использовании кастовать, то закастуйте дефайном
enum class A {
EN0 = 10, EN1 = 20
};
#define FORST (static_cast<int>(A::EN0)) //так
const int FORST2 = static_cast<int>(A::EN1); //ну или даже так
int temp = FORST2 - FORST; //вот тут какая разница, как 10 и 20 попали/заменились на FORST и FORST2? эквивалент int temp = 10; Тут нужно понимать что в temp ляжет 10, которая вычислилась на этапе компиляции
pps
#define asd(m) (do(0){return 5*m;})
#define EN1 true
#define TEMP2 asd(5)
const int pi1 = 3;
enum { ANGLE1 = pi1*10 + (EN1 ? TEMP2: 13)};
enum class A{ASD = ANGLE1, ASD2 = ANGLE1 + 6};
enum {QWE0 = static_cast<int>(A::ASD2), QWE1, QWE2};
#define POIU (QWE2 - 31)
int angleOfHor = POIU; //в конечном счете это тоже самое, что и int angleOfHor = 32;
Разворачивай хоть что, хоть в чем.