Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah Saya Boleh Menguatkuasakan Kekangan pada Parameter Templat dalam Pra-C 11?
Menguatkuasakan Kekangan pada Parameter Templat dalam C
Dalam C# dan bahasa pengaturcaraan moden yang lain, adalah perkara biasa untuk menentukan jenis generik dengan kekangan pada yang dibenarkan jenis. Dengan berbuat demikian, anda boleh memastikan bahawa kod anda beroperasi pada objek dengan kelas asas atau pelaksanaan antara muka tertentu.
Menggunakan Kekangan dalam C
Sementara C 11 memperkenalkan templat asli kekangan, terdapat teknik untuk mencapai tingkah laku yang serupa dalam versi pra-C 11. Satu pendekatan ialah menggunakan static_assert dengan std::is_base_of. Ini membolehkan anda melakukan semakan masa kompilasi sama ada parameter templat berasal daripada kelas asas yang diingini.
Contoh
Pertimbangkan coretan kod berikut:
<code class="cpp">#include <type_traits> template<typename T> class YourClass { YourClass() { // Compile-time check static_assert(std::is_base_of<BaseClass, T>::value, "type parameter of this class must derive from BaseClass"); // ... } }</code>
Dalam contoh ini, templat YourClass mempunyai pembina yang melakukan semakan masa kompilasi menggunakan static_assert dan std::is_base_of trait. Ia mengesahkan bahawa parameter templat yang ditentukan T diperoleh daripada kelas asas BaseClass. Jika syarat tidak dipenuhi, kod tidak akan disusun.
Dengan menggunakan teknik ini, anda boleh menguatkuasakan kekangan pada parameter templat anda dalam pra-C 11 C , memastikan kod anda beroperasi pada objek dengan warisan yang diingini hierarki.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menguatkuasakan Kekangan pada Parameter Templat dalam Pra-C 11?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!