Latar Belakang:
Anda mempunyai jenis enum yang ditakrifkan dalam pengepala perpustakaan luaran dan ingin menukar nilai enum kepada rentetan yang boleh dibaca manusia. Penyelesaian brute-force melibatkan fungsi yang ditakrifkan secara manual, tetapi penyelesaian yang elegan dicari menggunakan templat.
Menggunakan std::map:
Pendekatan mudah ialah menggunakan std::map
Syntactic Sugar dengan map_init class:
Untuk memudahkan sintaks, kelas map_init boleh dibuat untuk membolehkan rantaian tugasan nilai:
map_init(MyMap)(eValue1, "A") (eValue2, "B") (eValue3, "C");
Templat kelas ini mengembalikan objek map_init_helper yang menyimpan merujuk kepada peta dan menyediakan fungsi operator() untuk menambah pasangan nilai kunci.
Contoh Penggunaan:
Untuk menggunakan pendekatan ini, anda boleh:
Alternatif Pendekatan:
Jika nama enum itu sendiri harus digunakan sebagai rentetan, rujuk [siaran ini](pautan ke siaran yang berkaitan).
Ringkasan:
Penyelesaian ini menyediakan cara yang mudah dan cekap untuk memetakan C enum kepada rentetan, menawarkan alternatif yang lebih elegan kepada kaedah kekerasan. Kelas map_init memudahkan lagi sintaks, menjadikannya lebih mudah untuk bekerja dengan peta nilai enum dan perwakilan rentetannya.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memetakan C Enum dengan Mudah kepada Rentetan Menggunakan Templat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!