共用方式為


警告 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