경고 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.
}