Apabila cuba menggunakan kelas dan fungsi ahli mereka, ralat "permintaan untuk ahli '...' dalam '...' yang bukan jenis kelas" sering timbul. Untuk memahami puncanya, adalah penting untuk menghuraikan kod sumber yang mencetuskannya.
Dalam contoh yang disediakan, kelas Foo mempunyai dua pembina: satu yang tidak menerima hujah dan satu lagi yang menerima hujah integer. Apabila menginstant objek menggunakan pembina dengan hujah, pelaksanaan diteruskan seperti yang dijangkakan. Walau bagaimanapun, menggunakan pembina tanpa hujah menghasilkan ralat yang dinyatakan di atas.
Ralat berasal daripada sintaks yang salah. Untuk membetulkannya, coretan kod berikut harus digunakan:
Foo foo2();
Ganti kod di atas dengan:
Foo foo2;
Pengkompil tersilap mentafsir sintaks
Foo foo2()
sebagai pengisytiharan fungsi bernama 'foo2' dengan jenis pulangan 'Foo'. Walau bagaimanapun, ini bukan kefungsian yang dimaksudkan.
Selepas membetulkan sintaks, satu lagi ralat yang mungkin muncul, membaca "panggilan 'Foo()' yang terlebih muatan adalah samar-samar." Ini berlaku kerana pengkompil mengesan berbilang pembina terlebih beban untuk Foo. Untuk menyelesaikannya, nyatakan pembina yang akan digunakan secara eksplisit, seperti ditunjukkan di bawah:
Foo foo2 = Foo();
Atas ialah kandungan terperinci Mengapa 'meminta ahli '...' dalam '...' yang bukan jenis kelas' Berlaku Apabila Menggunakan Kelas C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!