Rumah > pembangunan bahagian belakang > C++ > Mengapa Kelas Templat Perlu Mengisytiharkan Kelas Templat Rakan dengan Parameter Templat Berbeza?

Mengapa Kelas Templat Perlu Mengisytiharkan Kelas Templat Rakan dengan Parameter Templat Berbeza?

Linda Hamilton
Lepaskan: 2024-11-22 08:49:10
asal
496 orang telah melayarinya

Why Does a Templated Class Need to Declare a Friend Templated Class with a Different Template Parameter?

Kelas Templat dengan Kelas Templat Rakan: Mentafsir Mekanik

Dalam senario ini, anda mentakrifkan templat kelas pokok binari (BT) dan templat kelas (BE ) yang mewakili unsur pokok. Anda menghadapi keperluan khusus untuk mengisytiharkan templat rakan sebagai BT bukannya BT. Siasatan ke atas tingkah laku ini membawa kepada pemahaman yang menyeluruh tentang templat kelas dan perhubungan rakan.

Templat Bersarang dan Membayangkan

Pada mulanya, anda cuba mengisytiharkan templat rakan sebagai templat kawan kelas BT;. Walau bagaimanapun, ini adalah dilarang kerana parameter templat templat bersarang tidak boleh mempunyai nama yang sama. Templat bersarang mesti menggunakan nama parameter templat yang berbeza.

Menentukan Hubungan Rakan

Apabila anda mengisytiharkan templat kelas rakan BT;, anda mewujudkan hubungan rakan antara BT dan BE, tanpa mengira hujah templat BT. Ini bermakna bahawa mana-mana instantiasi BT boleh mengakses ahli persendirian mana-mana instantiasi BE.

Jika anda ingin mengehadkan hubungan rakan hanya kepada instantiasi BT yang menggunakan hujah templat yang sama seperti BE, anda harus mengisytiharkan rakan seperti berikut:

template<class T> friend class bar<T>;
Salin selepas log masuk

Dalam kes khusus anda, mengisytiharkan bar kelas rakan; dalam kelas BE sudah memadai.

Atas ialah kandungan terperinci Mengapa Kelas Templat Perlu Mengisytiharkan Kelas Templat Rakan dengan Parameter Templat Berbeza?. 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