Selesaikan masalah "ralat: 'kelas' tidak mempunyai ahli bernama 'fungsi'" dalam kod C++
Apabila pengaturcaraan dalam C++, anda sering menghadapi pelbagai ralat kompilasi. Salah satu ralat biasa ialah "ralat: 'kelas' tidak mempunyai ahli bernama 'fungsi'". Ralat ini menunjukkan bahawa fungsi ahli yang dipanggil tidak ditemui dalam kelas. Di bawah ini kami akan memperkenalkan beberapa situasi dan penyelesaian biasa.
Dalam kes ini, masalah biasanya timbul daripada ketidakselarasan antara definisi dan pelaksanaan kelas. Ralat ini berlaku apabila kami mengisytiharkan fungsi ahli dalam definisi kelas, tetapi lupa untuk benar-benar mentakrifkan fungsi ini dalam pelaksanaan.
Kod sampel adalah seperti berikut:
class MyClass { public: void myFunction(); // 声明成员函数 }; int main() { MyClass obj; obj.myFunction(); // 调用成员函数 return 0; }
Penyelesaian: Tambahkan definisi fungsi ahli yang sepadan dalam pelaksanaan kelas.
void MyClass::myFunction() { // 实现代码 }
Jika fungsi ahli ditakrifkan sebagai peribadi atau dilindungi, ralat akan dilaporkan apabila fungsi dipanggil di tempat lain di luar kelas.
Kod sampel adalah seperti berikut:
class MyClass { private: void myFunction(); // 私有成员函数 }; int main() { MyClass obj; obj.myFunction(); // 调用私有成员函数 return 0; }
Penyelesaian: Tukar fungsi ahli persendirian kepada awam, atau tambahkan fungsi antara muka yang sepadan pada kelas untuk memanggil fungsi ahli persendirian.
class MyClass { public: void myInterface() { myFunction(); // 调用私有成员函数 } private: void myFunction(); }; int main() { MyClass obj; obj.myInterface(); // 调用接口函数 return 0; } void MyClass::myFunction() { // 实现代码 }
Jika fungsi ahli ditakrifkan dalam skop yang salah, pengkompil tidak akan dapat mencari fungsi ahli dan akan melaporkan ralat.
Kod sampel adalah seperti berikut:
class MyClass { public: void myFunction(); }; void myFunction() { // 实现代码 } int main() { MyClass obj; obj.myFunction(); // 调用成员函数 return 0; }
Penyelesaian: Tentukan fungsi ahli dalam skop kelas yang betul.
class MyClass { public: void myFunction(); }; void MyClass::myFunction() { // 实现代码 } int main() { MyClass obj; obj.myFunction(); // 调用成员函数 return 0; }
Ringkasan
Apabila menghadapi ralat "ralat: 'kelas' tidak mempunyai ahli bernama 'fungsi'" dalam kod C++, kita perlu menyemak sama ada situasi di atas wujud dalam kod. Mengisytiharkan fungsi ahli dengan betul, menukar fungsi ahli persendirian kepada awam atau menambah fungsi antara muka, dan menentukan fungsi ahli dalam skop yang betul adalah semua cara yang berkesan untuk menyelesaikan masalah ini. Dengan menyemak kod dengan teliti dan membuat pembetulan mengikut penyelesaian di atas, kami boleh berjaya menyelesaikan ralat ini dan menyusun serta menjalankan program C++ kami dengan lancar.
Atas ialah kandungan terperinci Selesaikan masalah 'ralat: 'kelas' tidak mempunyai ahli bernama 'fungsi'' dalam kod C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!