Peringatan C26818

Pernyataan switch tidak mencakup semua kasus. Pertimbangkan untuk menambahkan label 'default' (es.79).

Keterangan

Pemeriksaan ini mencakup label yang hilang default dalam pernyataan pengalihan yang beralih ke jenis non-enumerasi, seperti , , intdan sebagainyachar.

Untuk informasi selengkapnya, lihat ES.79: Gunakan default untuk menangani kasus umum (hanya) di Panduan Inti C++.

Contoh

Contoh ini memiliki label yang hilang default saat beralih melalui int.

void fn1();
void fn2();

void foo(int a)
{
    switch (a)
    {
        case 0:
            fn1();
            break;
        case 2:
            fn2();
            break;
    }
}

Solusi

Untuk memperbaiki masalah ini, sisipkan default label untuk mencakup semua kasus yang tersisa.

void fn1();
void fn2();
void default_action();

void foo(int a)
{
    switch (a)
    {
        case 0:
            fn1();
            break;
        case 2:
            fn2();
            break;
        default:
            default_action();
            break;
    }
}

Jika tidak ada default tindakan yang perlu diambil, sisipkan label kosong default untuk menunjukkan bahwa kasus lain belum dilupakan.

void fn1();
void fn2();

void foo(int a)
{
    switch (a)
    {
        case 0:
            fn1();
            break;
        case 2:
            fn2();
            break;
        default:
            // do nothing for the rest of the cases
            break;
    }
}