Это тоже то, чего я хочу, но не удосужился попытаться решить. Вот решение не проверено . РЕДАКТИРОВАТЬ: Я попробовал, и он прекрасно работает! Это мой самый первый служебный макрос C ++ 11. Также я добавил перечислитель «один за другим», чтобы помочь расширить его до «производных» перечислений.
#define IMPORTABLE_ENUM( TYPENAME, ... ) \
\
struct import_ ## TYPENAME { \
enum TYPENAME { \
__VA_ARGS__ \
}; \
}; \
\
typedef import_ ## TYPENAME :: TYPENAME TYPENAME;
Это нельзя импортировать в область видимости блока, но определяет базовый класс import_duck
, чтобы привести перечислители в класс. Использование:
* * 1010
И поскольку среди производных классов существует только один тип enum
, static_cast
не требуется.