Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya boleh menggunakan literal rentetan sebagai hujah templat bukan jenis dalam C ?
Melalui Huruf Rentetan sebagai Argumen Templat Bukan Jenis
Dalam bidang templat C, mengisytiharkan templat kelas yang menerima literal rentetan sebagai parameter templat bukan jenis boleh menjadi tugas yang membingungkan. Ramai pengaturcara menginginkan keupayaan untuk menentukan literal rentetan secara langsung dalam perisytiharan templat, seperti my_class<"string">.
Untuk menangani keperluan ini, manakala C tidak membenarkan secara langsung menghantar literal rentetan sebagai bukan jenis hujah, penyelesaian yang menggunakan tatasusunan aksara const boleh digunakan. Dengan mentakrifkan pembolehubah const char[] yang dipautkan secara statik dan menghantarnya sebagai parameter templat, kami mencapai kesan yang serupa dengan menggunakan literal rentetan.
Berikut ialah coretan kod yang boleh dikompilasi yang menunjukkan pendekatan 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(); }
Dalam contoh ini, pembolehubah const char[] yang dipautkan secara statik bernama teststr ditakrifkan dengan nilai "Hello world!". Dengan menghantar teststr sebagai parameter templat bukan jenis kepada templat kelas cts, kami mencapai gelagat yang diingini dengan berkesan menggunakan literal rentetan.
Menjalankan kod ini menghasilkan output berikut:
Hello world!
Teknik ini menyediakan penyelesaian kepada kekurangan sokongan langsung untuk menghantar literal rentetan sebagai argumen templat bukan jenis dalam C , membenarkan pengaturcara menentukan templat kelas yang menerima seperti rentetan. nilai dengan cara yang mudah.
Atas ialah kandungan terperinci Bagaimanakah saya boleh menggunakan literal rentetan sebagai hujah templat bukan jenis dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!