Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya boleh menentukan fungsi ahli templat di luar definisi kelas dalam C?

Bagaimanakah saya boleh menentukan fungsi ahli templat di luar definisi kelas dalam C?

Susan Sarandon
Susan Sarandonasal
2024-11-04 11:09:30267semak imbas

How can I define template member functions outside of a class definition in C  ?

Menentukan Fungsi Ahli Templat Di Luar Definisi Kelas

Dalam C , adalah mungkin untuk mentakrifkan fungsi ahli templat di luar definisi kelas sambil mengekalkan akses kepada kedua-dua parameter templat. Teknik ini boleh berguna untuk menyusun kod atau menjajarkan dengan gaya pengekodan tertentu.

Untuk mencapai ini, anda perlu menggunakan pengisytiharan templat bersarang. Sintaks adalah seperti berikut:

<code class="cpp">template<class T> template <class U>
void Foo::bar() { /* implementation */ }</code>

Pengisytiharan ini menunjukkan bahawa bar fungsi ialah ahli kelas Foo, dan kedua-dua T dan U ialah parameter templat. Walau bagaimanapun, pelaksanaan sebenar fungsi disediakan di luar definisi kelas.

Sebagai contoh, pertimbangkan coretan kod berikut:

<code class="cpp">template <class T>
class Foo
{
public:
    template <class U>
    void bar();
};

template<class T> template <class U>
void Foo::bar()
{
    // Implementation using both T and U
}</code>

Di sini, bar fungsi dilaksanakan di luar Foo definisi kelas menggunakan perisytiharan templat bersarang. Ini membolehkan anda menggunakan kedua-dua T dan U dalam pelaksanaan fungsi, seolah-olah ia ditakrifkan dalam kelas.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menentukan fungsi ahli templat di luar definisi kelas dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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