Стандарт C ++ запрещает выполнять неявное приведение от int
до enum
(Примечание: неявное преобразование из enum
в int
разрешено).
Однако вы можете выполнитьвместо статического приведения:
designFlags myDesign = static_cast<designFlags>(BOLD | UNDERLINE);
cout << myDesign; // prints 5
Имейте в виду, что наиболее похоже, что результирующее значение не является одним из значений, указанных в designFlags
.Обычно это обычная практика, но для сравнения необходимо использовать побитовые операции:
Например:
// wrong
if (myDesign == BOLD)
// ok (most of the time)
if (myDesign & BOLD)
// always ok
if ((myDesign & BOLD) == BOLD)