Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Kelas Warisan Boleh Mengakses Pembolehubah Dilindungi dalam Kelas Induk Templat dalam C?

Bagaimanakah Kelas Warisan Boleh Mengakses Pembolehubah Dilindungi dalam Kelas Induk Templat dalam C?

Mary-Kate Olsen
Lepaskan: 2024-12-06 20:16:12
asal
585 orang telah melayarinya

How Can Inherited Classes Access Protected Variables in Templated Parent Classes in C  ?

Mengakses Pembolehubah Diwarisi daripada Kelas Induk Templat

Coretan kod yang disediakan menggambarkan senario di mana Bar kelas yang diwarisi cuba mengakses pembolehubah yang dilindungi baginya kelas induk Foo, iaitu kelas templat. Walau bagaimanapun, pengkompil menghasilkan ralat, yang membawa kepada kekeliruan mengenai sama ada pengkompil mematuhi piawai.

Menurut piawaian C, nama yang tidak layak dalam templat dianggap tidak bergantung dan mesti diselesaikan apabila templat ditakrifkan . Memandangkan templat kelas asas khusus mungkin tidak tersedia semasa definisi templat, nama tidak layak yang belum diselesaikan mengakibatkan ralat.

Ini terpakai kepada kedua-dua pembolehubah dan fungsi yang diisytiharkan dalam kelas asas, seperti yang dilihat dalam contoh di mana Bar boleh mengakses a menggunakan nama yang layak atau menggunakan pengisytiharan. Yang terakhir membenarkan akses yang tidak layak dalam kelas yang diperoleh, menyelesaikan ralat awal.

Sebagai contoh, pengubahsuaian kod berikut menyelesaikan isu:

template<class T>
int Bar<T>::Perna(int u) {
  int c = Foo<T>::a * 4;  // Qualified name
  c = this->a * 4;        // Pointer to own instance
  using Foo<T>::a;
  c = a * 4;               // Using declaration
}
Salin selepas log masuk

Dengan menjelaskan peraturan carian dan menyediakan penyelesaian alternatif , penjelasan ini menekankan nuansa peleraian templat dan membantu pembangun memahami rasional di sebalik tingkah laku pengkompil.

Atas ialah kandungan terperinci Bagaimanakah Kelas Warisan Boleh Mengakses Pembolehubah Dilindungi dalam Kelas Induk Templat dalam 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