다음을 통해 공유


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

참고 항목

C26813
C26827