Templat Kelas dengan Huruf Rentetan Bukan Jenis
Dalam C , anda mungkin menghadapi keperluan untuk mengisytiharkan templat kelas dengan parameter bukan jenis, seperti literal rentetan. Pertanyaan ini meneroka kemungkinan pendekatan ini dan menyediakan penyelesaian.
Rasional Parameter Templat Bukan Jenis
Anda mungkin ingin menggunakan literal rentetan secara langsung sebagai templat bukan jenis parameter untuk kemudahan atau tujuan kebolehbacaan. Walau bagaimanapun, ini tidak disokong secara langsung dalam C .
Penyelesaian yang Boleh Dilaksanakan
Walaupun menghantar rentetan literal secara langsung tidak mungkin, penyelesaian melibatkan penggunaan const char* non -type parameter templat dan menghantarnya pembolehubah const char[] dengan pautan statik. Kaedah ini hampir sama dengan menghantar literal rentetan.
Contoh Pelaksanaan
Kod berikut menunjukkan penyelesaian ini:
#include <iostream> template<const char *str> struct cts { void p() {std::cout << str;} }; static const char teststr[] = "Hello world!"; int main() { cts<teststr> o; o.p(); }
Penjelasan
Kesimpulan
Penyelesaian ini membolehkan anda menggunakan literal rentetan dalam templat kelas sebagai parameter bukan jenis dengan berkesan. Ia menyediakan penyelesaian alternatif apabila input literal rentetan langsung tidak dapat dilaksanakan.
Atas ialah kandungan terperinci Bolehkah Huruf Rentetan Digunakan sebagai Parameter Templat Bukan Jenis dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!