Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mengekalkan Ahli Kelas Statik (Termasuk Jenis Bukan Sepadu) dalam Templat Kelas C?

Bagaimanakah Saya Boleh Mengekalkan Ahli Kelas Statik (Termasuk Jenis Bukan Sepadu) dalam Templat Kelas C?

Susan Sarandon
Lepaskan: 2024-12-10 08:46:13
asal
809 orang telah melayarinya

How Can I Preserve Static Class Members (Including Non-Integral Types) in C   Class Templates?

Memelihara Ahli Kelas Statik dalam Templat Kelas

Dalam alam C , anda mungkin menghadapi senario di mana anda ingin menentukan ahli data statik untuk kelas templat, tetapi jenis data bukan bersepadu menimbulkan cabaran. Artikel ini menyelidiki penyelesaian yang membolehkan anda mengisytiharkan ahli statik tanpa mengira jenis mereka sambil memastikan kewujudan mereka dalam kod yang disusun.

Pertimbangkan coretan kod berikut:

template <typename T>
struct S {
    ...
    static double something_relevant = 1.5;
};
Salin selepas log masuk

Sebagaimana anda' saya perasan, pengkompil melemparkan ralat kerana something_relevant bukanlah jenis data penting. Isu ini berpunca daripada fakta bahawa templat diwujudkan apabila digunakan, dan memandangkan S ialah templat, anda tidak boleh mentakrifkan ahlinya di dalam fail yang dihimpun.

Untuk mengatasi halangan ini, anda boleh memilih untuk menentukan ahli statik dalam fail pengepala itu sendiri, seperti yang ditunjukkan di bawah:

template <typename T>
struct S {
    static double something_relevant;
};

template <typename T>
double S<T>::something_relevant = 1.5;
Salin selepas log masuk

Dengan mentakrifkan ahli statik dalam fail pengepala, anda memastikan takrifan luar kelas dan elakkan sebarang ralat penyusunan. Selain itu, kerana ia disertakan dalam templat, pengkompil akan mengendalikan sebarang definisi berbilang berpotensi, memastikan instantiasi yang bersih. Teknik ini membolehkan anda mengekalkan ahli statik dalam templat kelas, tanpa mengira jenis data mereka dan menjamin bahawa mereka akan hadir dalam kod penyusunan akhir.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengekalkan Ahli Kelas Statik (Termasuk Jenis Bukan Sepadu) dalam Templat Kelas C?. 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