Kelas Rujuk Kendiri dalam C tanpa Pengulangan
C tidak menawarkan kata kunci yang setara dengan kata kunci kendiri PHP, yang mewakili jenis lampiran kelas. Untuk menirunya untuk kelas tertentu, seseorang boleh mentakrifkan:
1 |
|
Walau bagaimanapun, ini memerlukan pengulangan nama kelas, meninggalkan ruang untuk pepijat senyap. Adakah terdapat cara "autonomi" untuk mencapai ini menggunakan decltype dan rakan?
Sintaks berikut gagal disebabkan penggunaan tidak sah ini di peringkat atas:
1 |
|
Satu penyelesaian melibatkan memperkenalkan kelas templat Diri seperti berikut:
1 2 3 4 5 6 7 |
|
Makro kemudiannya boleh digunakan untuk memudahkan kelas takrifan:
1 2 3 4 5 6 |
|
Derivasi boleh dikendalikan dengan:
1 2 3 |
|
Pewarisan berbilang dan makro variadik membolehkan penyepaduan mudah dengan hierarki kelas yang kompleks:
1 2 3 4 5 |
|
Teknik ini telah diuji dan disahkan dengan kedua-dua GCC 4.8 dan Clang 3.4.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencapai Rujukan Kendiri dalam Kelas C Tanpa Mengulang Nama Kelas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!