Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mengendalikan Getter Pendua dengan Elegan dalam C?

Bagaimanakah Saya Boleh Mengendalikan Getter Pendua dengan Elegan dalam C?

DDD
DDDasal
2024-12-07 19:43:12521semak imbas

How Can I Elegantly Handle Duplicate Getters in C  ?

Mengatasi Pendua Pendapat dengan Keanggunan

Pertemuan dengan kaedah pengambil yang berlebihan untuk pembolehubah pendua, const dan bukan const boleh mengecewakan. Pertimbangkan contoh:

class Foobar {
public:
    Something& getSomething(int index);
    const Something& getSomething(int index) const;
};

Melaksanakan mana-mana kaedah dengan yang lain adalah mustahil kerana ketidakupayaan untuk menggunakan versi bukan const daripada kaedah const. Pelakon diperlukan untuk memanggil versi const daripada versi bukan const.

Penyelesaian Praktikal

Walaupun tiada penyelesaian yang sempurna, satu pendekatan pragmatik adalah dengan melaksanakan versi bukan const dengan membuang const daripada versi const. Walaupun kesederhanaannya, kaedah ini memastikan keselamatan. Memandangkan fungsi ahli memanggil adalah bukan const, objek juga bukan const, membolehkan cast dilakukan.

class Foo {
public:
    const int& get() const {
        // Non-trivial work
        return foo;
    }

    int& get() {
        return const_cast<int&>(const_cast<const Foo*>(this)->get());
    }

private:
    int foo;
};

Dengan menggunakan pendekatan ini, anda boleh menghapuskan keperluan untuk kaedah getter pendua dan mengekalkan keselamatan kod anda.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengendalikan Getter Pendua dengan Elegan dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn