Corak templat berulang yang ingin tahu (CRTP) membolehkan polimorfisme statik dalam C , tetapi ia menjadi mencabar apabila bertujuan untuk ubah suai jenis pulangan fungsi berdasarkan jenis terbitan. Walaupun CRTP biasanya boleh membuat kesimpulan jenis terbitan, kod berikut menghadapi isu penyusunan dalam MSVC 2010:
1 2 3 4 5 6 7 8 9 10 11 |
|
Ralat ini timbul kerana kelas terbitan tidak lengkap apabila digunakan sebagai parameter templat untuk kelas asas dalam asas senarai kelas. Untuk menangani isu ini, penyelesaian biasa melibatkan penggunaan templat kelas ciri:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
Dengan mengkhususkan templat base_traits untuk jenis terbitan yang diingini, anda boleh menentukan ahli yang diperlukan, termasuk jenis pulangan tersuai untuk fungsi seperti foo (). Teknik ini membolehkan polimorfisme statik dengan lebih fleksibiliti dalam jenis pemulangan sambil mengelakkan ralat kompilasi.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencapai Jenis Pulangan Fleksibel dengan Polimorfisme Statik C (CRTP) dan Mengelakkan Ralat Penyusunan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!