Saya sudah menemukan penjelasan yang sangat bagus ini Menginisialisasi enum melalui konstruktor tetapi tidak sesuai dengan kebutuhan saya.

Jadi saya mendeklarasikan enum di dalam kelas dan ingin menginisialisasinya di dalam konstruktor kelas dan kemudian memanggil enum ini melalui pernyataan switch di dalam suatu metode tetapi saya tidak dapat mengimplementasikannya. Berikut adalah kode:

    class myClass {
        
        myClass();
        
        enum class State;

        void update();

        };
    
    
    //  initialise State() with default value, so state1=0, state2=1
    myClass::myClass() : State() {} 
    
    enum class
        myClass::State
        {
            state1,
            state2
        } enumState;
    
    
    
    
    void myClass::update(){
    
    switch (enumState){
    
    case enumState.state1:
         break;
    case enumState.state2:
         break;

    }
}

Tapi jelas itu bukan cara yang benar untuk mengimplementasikannya.

Saya mendapatkan kesalahan ini:

Kesalahan: 'enum class myClass::State' bukan anggota data non-statis dari 'myClass'

Kesalahan: permintaan untuk anggota 'state1' di 'enumState', yang merupakan tipe non-kelas 'myClass::State'

Dapatkah seseorang menjelaskan kepada saya bagaimana menerapkan kode seperti itu dan bagaimana jika saya ingin menginisialisasi Status dengan parameter default?

Terima kasih !

0
sisso 12 Mei 2021, 21:02

1 menjawab

Jawaban Terbaik

Di dalam kelas Anda, Anda ingin memasukkan variabel tipe State:

class myClass {
    
    myClass();
     
    enum class State;

    // create a class member variable of type State named enumState;
    State enumState;

    void update();
};

Kemudian di dalam konstruktor Anda dapat menginisialisasi variabel enumState baru alih-alih tipe enum State.

Untuk mengatasi kesalahan kedua yang Anda lihat, Anda harus membuat metode update():

void myClass::update(){
    switch (enumState){
    case State::state1:
            break;
    case State::state2:
            break;
    
    }
}

Ini karena cara nilai enum diakses (menggunakan Enum::value daripada enum.value).

0
mattlangford 12 Mei 2021, 19:00