Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah saya boleh mencipta sifat gaya C# dalam C 11?

Bagaimanakah saya boleh mencipta sifat gaya C# dalam C 11?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-29 12:40:02385semak imbas

How can I create C#-style properties in C  11?

Mencapai C#-Style Properties dalam C 11

Dalam C#, properties menyediakan sintaks yang elegan untuk mengakses pembolehubah ahli kelas dengan kaedah getter dan setter . Dalam C 11, tiada persamaan langsung dengan ciri ini. Walau bagaimanapun, dengan beberapa penyelesaian, adalah mungkin untuk mensimulasikan sifat gaya C# dalam C 11.

Menggunakan Kelas Tanpa Nama

Satu pendekatan ialah menggunakan kelas tanpa nama untuk merangkum harta benda. Ini membolehkan anda membuat getter dan setter dalam kelas bersarang sambil menyediakan sintaks mudah untuk mengakses harta dari luar.

<code class="cpp">struct Foo
{
    class {
        int value;
        public:
            int & operator = (const int &i) { return value = i; }
            operator int () const { return value; }
    } alpha;

    class {
        float value;
        public:
            float & operator = (const float &f) { return value = f; }
            operator float () const { return value; }
    } bravo;
};</code>

Pengambil dan Penetap Tersuai

Satu lagi pilihan ialah menulis getter dan setter anda sendiri untuk pembolehubah ahli kelas. Pendekatan ini membolehkan anda menyesuaikan getter dan setter mengikut keperluan khusus anda.

<code class="cpp">private:
    int _foo;
public:
    int getFoo() { return _foo; };
    void setFoo(int value) { _foo = value; };</code>

Akses Ahli Kelas Pemegang

Dalam contoh di atas, sifat boleh diakses secara langsung sebagai ahli kelas penutup. Jika anda ingin menggunakan sifat sebagai ahli kelas pemegang, anda boleh melanjutkan kod untuk memasukkan lapisan akses ahli kelas pemegang. Lapisan ini akan menyediakan akses kepada sifat melalui kelas pemegang.

Atas ialah kandungan terperinci Bagaimanakah saya boleh mencipta sifat gaya C# dalam C 11?. 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