Rumah >pembangunan bahagian belakang >C++ >Mengapa 'meminta ahli '...' dalam '...' yang bukan jenis kelas' Berlaku Apabila Menggunakan Kelas C?

Mengapa 'meminta ahli '...' dalam '...' yang bukan jenis kelas' Berlaku Apabila Menggunakan Kelas C?

Linda Hamilton
Linda Hamiltonasal
2024-11-30 20:19:11831semak imbas

Why Does

Memahami Ralat: "permintaan untuk ahli '...' dalam '...' yang bukan jenis kelas"

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.

Menyelesaikan Isu

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.

Mengelakkan Kekaburan

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!

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