Meluluskan Objek Const sebagai 'ini' Argumen: Ralat Penyingkiran Kelayakan
Dalam C , menghantar objek const sebagai argumen 'ini' kepada fungsi ahli boleh mengakibatkan "melepasi 'const xxx' kerana hujah 'ini' fungsi ahli membuang kelayakan" kesilapan. Ini berlaku kerana pengkompil menganggap kemungkinan bahawa fungsi bukan ahli const boleh mengubah suai objek, yang dilarang untuk objek const.
Analisis Masalah
Dalam kod yang disediakan , objek dalam set disimpan sebagai const StudentT. Apabila mengakses fungsi ahli getId() dan getName() dalam gelung, pengkompil mengesan isu ini kerana objek adalah const dan fungsi ahli tidak ditandakan sebagai const.
Penyelesaian
Untuk menyelesaikan ralat, fungsi getId() dan getName() mesti dibuat const:
int getId() const { return id; } string getName() const { return name; }
Ini membolehkan fungsi dipanggil pada objek const tanpa melanggar peraturan const.
Nota Tambahan
inline bool operator< (const StudentT & s1, const StudentT & s2) { return s1.getId() < s2.getId(); }
Atas ialah kandungan terperinci Mengapa Meluluskan Const Membantah kepada Fungsi Bukan Ahli Konst Menyebabkan Ralat Hilang Kelayakan Kelayakan dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!