Rumah > Artikel > pembangunan bahagian belakang > Bolehkah String Literals Diluluskan sebagai Hujah Templat Bukan Jenis?
Soalan:
Bolehkah rentetan literal dihantar sebagai hujah bukan jenis kepada templat kelas, seperti dalam perisytiharan seperti my_class<"string">?
Jawapan:
Walaupun menghantar terus literal rentetan sebagai argumen templat bukan jenis tidak mungkin, terdapat penyelesaian yang hampir sama ia.
Anda boleh menggunakan parameter templat bukan jenis jenis const char* dan memberikannya const pembolehubah char[] dengan pautan statik. Pendekatan ini berkongsi persamaan dengan menghantar literal rentetan secara langsung.
Berikut ialah contoh yang boleh disusun:
#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(); }
Kod di atas mengisytiharkan templat kelas cts dengan str parameter templat bukan jenis yang memerlukan pemalar penunjuk watak. Teststr pembolehubah, yang ditakrifkan dengan pautan statik, memegang literal rentetan dan dihantar ke instantiasi templat.
Kaedah ini ialah alternatif yang berdaya maju untuk menghantar literal rentetan secara terus sebagai argumen templat bukan jenis.
Atas ialah kandungan terperinci Bolehkah String Literals Diluluskan sebagai Hujah Templat Bukan Jenis?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!