У меня есть API-интерфейс C, который определяет перечисление следующим образом:
typedef enum
{
C_ENUM_VALUE_NONE = 0,
C_ENUM_VALUE_APPLE = (1 << 0),
C_ENUM_VALUE_BANANA = (1 << 1),
C_ENUM_VALUE_COCONUT = (1 << 2),
// etc.
C_ENUM_VALUE_ANY = ~0
} CEnumType;
Существует метод, который использует перечисление, определяемое как:
void do_something(CEnumType types);
В C вы можете вызвать что-то вроде:
do_something(C_ENUM_VALUE_APPLE | C_ENUM_VALUE_BANANA);
Однако, если вы попытаетесь называть его таким образом в С++ (Linux, g++ компилятор), вы получите ошибку, неверное преобразование из 'int в' CEnumType.
Каков правильный способ использования этого C API из моего приложения на С++?