Ostrzeżenie C26828
Różne typy wyliczenia mają nakładające się wartości. Czy w tym miejscu chcesz użyć innej stałej wyliczenia?
Uwagi
W większości przypadków pojedynczy typ wyliczenia opisuje wszystkie flagi bitów, których można użyć dla opcji. Jeśli używasz dwóch różnych typów wyliczenia, które mają nakładające się wartości w tym samym wyrażeniu bitowym, prawdopodobieństwo, że te typy wyliczenia nie zostały zaprojektowane do użytku razem.
Nazwa analizy kodu: MIXING_OVERLAPPING_ENUMS
Przykład
Poniższy przykładowy kod powoduje ostrzeżenie 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?
}
Aby naprawić ostrzeżenie, upewnij się, że typy wyliczenia przeznaczone do użytku razem nie mają nakładających się wartości. Możesz też upewnić się, że wszystkie powiązane opcje znajdują się w jednym typie wyliczenia.
enum BitWiseA
{
A = 1,
B = 2,
C = 4
};
int overlappingBitwiseEnums(BitWiseA a)
{
return (int)a|(int)BitWiseA::A; // No warning.
}