Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mendapatkan Nama Jenis Parameter Templat pada Masa Kompilasi dalam C?
Jenis Pendapatan Nama dalam Templat C
Dalam C , templat menyediakan mekanisme yang berkuasa untuk mencipta kelas dan fungsi generik. Walau bagaimanapun, mendapatkan nama jenis parameter templat boleh mencabar, terutamanya apabila mengendalikan pengecualian yang menunjukkan ralat penghuraian data. Artikel ini meneroka penyelesaian masa kompilasi untuk mendapatkan semula nama jenis dalam templat, mengelakkan overhed prestasi masa jalan.
Cabaran asal melibatkan penulisan kelas templat untuk menghuraikan fail data. Matlamatnya adalah untuk memberikan mesej ralat yang bermakna sekiranya berlaku ralat menghuraikan, termasuk nama jenis yang cuba dihuraikan oleh fungsi templat.
Kod sampel yang disediakan cuba menggunakan boost::lexical_cast untuk menukar nilai kepada yang diingini taip, membuang pengecualian jika penukaran gagal. Walau bagaimanapun, ia tidak mempunyai mekanisme untuk mendapatkan semula nama jenis untuk digunakan dalam mesej pengecualian.
Penyelesaian yang diterima memanfaatkan fungsi typeid(T), yang mengembalikan objek std::type_info. Kaedah name() std::type_info mengembalikan tatasusunan aksara yang ditamatkan nol yang mengandungi nama jenis, menyediakan kefungsian yang diingini. Coretan kod di bawah menggambarkan pengubahsuaian:
try { return boost::lexical_cast<T>(it->second); } catch (...) { throw ParseError(file, section, key, it->second, typeid(T).name()); }
Dengan menggunakan typeid(T).name(), nama jenis diperoleh pada masa penyusunan, menghapuskan sebarang overhed prestasi masa jalan. Pendekatan ini memastikan bahawa mesej ralat termasuk maklumat terperinci tentang jenis yang dijangkakan, meningkatkan pengalaman pengguna dan memudahkan penyahpepijatan ralat.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Nama Jenis Parameter Templat pada Masa Kompilasi dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!