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