Peringatan C26828
Jenis enum yang berbeda memiliki nilai yang tumpang tindih. Apakah Anda ingin menggunakan enum konstanta lain di sini?
Keterangan
Sebagian besar waktu, jenis enumerasi tunggal menjelaskan semua bendera bit yang dapat Anda gunakan untuk opsi. Jika Anda menggunakan dua jenis enumerasi berbeda yang memiliki nilai tumpang tindih dalam ekspresi bitwise yang sama, kemungkinan besar jenis enumerasi tersebut tidak dirancang untuk digunakan bersama-sama.
Nama analisis kode: MIXING_OVERLAPPING_ENUMS
Contoh
Contoh kode berikut menyebabkan peringatan 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?
}
Untuk memperbaiki peringatan, pastikan jenis enumerasi yang dirancang untuk digunakan bersama-sama tidak memiliki nilai yang tumpang tindih. Atau, pastikan semua opsi terkait berada dalam satu jenis enumerasi.
enum BitWiseA
{
A = 1,
B = 2,
C = 4
};
int overlappingBitwiseEnums(BitWiseA a)
{
return (int)a|(int)BitWiseA::A; // No warning.
}