Bagaimanakah Saya Boleh Menguatkuasakan Kekangan pada Parameter Templat dalam Pra-C 11?

Mary-Kate Olsen
Lepaskan: 2024-10-30 18:11:03
asal
849 orang telah melayarinya

How Can I Enforce Constraints on Template Parameters in Pre-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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!