Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Menentukan Hubungan Rakan dalam Kelas Templat dengan Hujah Templat Berbeza?

Bagaimana untuk Menentukan Hubungan Rakan dalam Kelas Templat dengan Hujah Templat Berbeza?

Linda Hamilton
Lepaskan: 2024-11-17 09:35:04
asal
805 orang telah melayarinya

How to Define Friend Relationships in Template Classes with Different Template Arguments?

Memahami Templat Kelas dengan Rakan Kelas Templat

Apabila mentakrifkan kelas pokok binari (BT) dan kelas elemennya (BE), ia adalah perlu untuk mewujudkan hubungan rakan untuk BT mengakses ahli peribadi BE. Walau bagaimanapun, adalah penting untuk memahami mekanisme asas untuk mentakrifkan perhubungan dengan betul.

Pada asalnya, anda cuba mengisytiharkan perhubungan rakan sebagai templat kawan kelas BT. Tetapi sintaks ini memperkenalkan konflik penamaan dengan parameter templat BE. Parameter templat dalam templat bersarang mesti mempunyai nama yang berbeza.

Sebaliknya, anda harus menggunakan nama parameter templat yang berbeza, seperti:

Pengisytiharan ini menunjukkan bahawa mana-mana kelas BT, tanpa mengira templatnya argumen, ialah rakan kepada semua kelas BE dengan argumen templat yang sepadan.

Pertimbangkan contoh berikut untuk menjelaskan lagi jenis yang berbeza hubungan rakan:

Dalam kes ini, bar ialah rakan foo tanpa mengira hujah templat bar. Mana-mana pengkhususan bar akan menjadi rakan kepada mana-mana pengkhususan foo.

Di sini, bar hanya rakan foo jika hujah templatnya sepadan dengan foo. Jadi, hanya bar akan menjadi rakan foo.

Dalam senario khusus anda, bar kelas rakan; sepatutnya memadai kerana ia membenarkan sebarang pengkhususan bar untuk mengakses ahli peribadi BE asalkan hujah templatnya sepadan dengan kelas BE yang sepadan.

Atas ialah kandungan terperinci Bagaimana untuk Menentukan Hubungan Rakan dalam Kelas Templat dengan Hujah Templat Berbeza?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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