Rumah >pembangunan bahagian belakang >C++ >Bilakah Kata Kunci `typename` Diperlukan dalam Templat C?
Bilakah kata kunci "typename" diperlukan?
Dalam C , kata kunci "typename" digunakan untuk menyahkekaburan nama bersarang yang bergantung pada parameter templat.
Mengapa "nama taip" diperlukan dalam contoh kod?
Kod contoh mentakrifkan kelas C dengan struct bersarang P. Di dalam fungsi ahli f(), baris:
typename vector<P>::iterator p = vec.begin();
memerlukan penggunaan "typename " kerana:
ialah nama bersarang yang bergantung pada parameter templat K kelas C.
::iterator ialah jenis atau templat.
Kes lain di mana "nama taip" adalah perlu:
"typename" juga diperlukan dalam situasi berikut:
template<typename T> class A { public: void f(typename T::P& p); // Requires "typename" };
template<typename T> class A { public: template<typename U> void g(typename T::template F<U>& f); // Requires "typename" };
template<typename T> class A { public: template<> void g<int>(typename T::F<int>& f); // Requires "typename" };
Secara amnya, bila-bila masa anda perlu merujuk kepada nama bersarang bergantung, kata kunci "typename" diperlukan untuk menyahkekaburan jenis daripada templat.
Atas ialah kandungan terperinci Bilakah Kata Kunci `typename` Diperlukan dalam Templat C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!