Apabila menghadapi ralat "melepasi const xxx sebagai 'ini' argumen fungsi ahli membuang kelayakan ," ia menunjukkan bahawa fungsi ahli bukan const sedang dipanggil pada objek const. Dalam kes ini, isu timbul apabila mengakses kaedah getId() dan getName() bagi objek StudentT yang disimpan dalam std::set.
Objek dalam std::set. disimpan sebagai const StudentT. Apabila memanggil getId() dan getName() pada penyahrujukan iterator (*itr), pengkompil mengesan ketidakpadanan. Fungsi ahli bukan const, tetapi objek yang diakses ialah const.
Untuk menyelesaikan isu ini, fungsi ahli getId() dan getName() hendaklah diisytiharkan sebagai kaedah const :
int getId() const { return id; } string getName() const { return name; }
Dengan mengisytiharkannya sebagai kaedah const, ia menjamin bahawa mereka tidak akan mengubah suai objek StudentT, menjadikannya selamat untuk memanggilnya pada objek const.
Pengendali< hendaklah juga diisytiharkan sebagai kaedah const, kerana ia dipanggil pada objek StudentT const semasa menjalankan operasi set:
inline bool operator< (const StudentT & s1, const StudentT & s2) { return s1.getId() < s2.getId(); }
Dengan mengisytiharkannya sebagai const, ia memastikan bahawa pengendali tidak mengubah suai objek yang dibandingkan.
Atas ialah kandungan terperinci Bagaimana untuk Betulkan 'lulus const xxx sebagai hujah 'ini' fungsi ahli membuang kelayakan' Ralat dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!