Я работаю над проектом для микроконтроллера AVR с использованием инфраструктуры Arduino.
Я строю простую систему отслеживания ошибок, структурированную как класс (ErrorManager
). Я определил пару функций, таких как
void ErrorManager::error(??? errorCode) { // more on ??? later
// rise error in some way
}
. Я хочу определить коды ошибок отдельно в разных модулях, составляющих этот проект. В каждом модуле я хотел бы определить enum class
, содержащий коды для этого модуля, а затем передать их функции error
, указанной выше:
namespace someNamespace /* or class SomeClass */ {
// cointains error codes for this class/module/part of the code
enum class ErrorCodes : unsigned int {
none = 0,
anError,
someOtherError
}
void foo() {
error(ErrorCodes::anError);
}
}
(пусть errManager
будет ErrorManager
объект объявлен в одном модуле моего проекта)
Я мог бы выполнить sh, написав unsigned int
в ???
и используя enum
вместо enum class
, но это означало бы, что имена кодов ошибок будут находиться в области видимости во всем пространстве имен модуля или, по крайней мере, во всем классе, где они определены, и я бы предпочел этого избежать.
Есть ли способ сделать это с помощью enum class
? Например, что-то записать в ???
, что означает «Принимать любой Enum (с беззнаковым int, или с некоторым типом typedef
ined, или даже любым целочисленным типом) в качестве параметра»?