Предупреждение C26828
Разные типы перечисления имеют перекрывающиеся значения. Вы хотите использовать еще одну константу перечисления здесь?
Замечания
В большинстве случаев один тип перечисления описывает все битовые флаги, которые можно использовать для параметра. Если вы используете два разных типа перечисления, которые имеют перекрывающиеся значения в одном битовом выражении, вероятность того, что эти типы перечисления не были предназначены для совместного использования.
Имя анализа кода: MIXING_OVERLAPPING_ENUMS
Пример
Следующий пример кода вызывает предупреждение C26828:
enum BitWiseA
{
A = 1,
B = 2,
C = 4
};
enum class BitWiseB
{
AA = 1,
BB = 2,
CC = 4,
All = 7
};
int overlappingBitwiseEnums(BitWiseA a)
{
return (int)a|(int)BitWiseB::AA; // Warning C26828: Different enum types have overlapping values. Did you want to use another enum constant here?
}
Чтобы исправить предупреждение, убедитесь, что типы перечислений, предназначенные для совместного использования, не имеют перекрывающихся значений. Или убедитесь, что все связанные параметры находятся в одном типе перечисления.
enum BitWiseA
{
A = 1,
B = 2,
C = 4
};
int overlappingBitwiseEnums(BitWiseA a)
{
return (int)a|(int)BitWiseA::A; // No warning.
}