Rumah > Artikel > pembangunan bahagian belakang > Bolehkah saya Menggunakan Pembolehubah Ahli sebagai Argumen Lalai dalam Kaedah C?
Apabila mencipta kelas dengan kaedah yang mengambil berbilang argumen, ia boleh memberi manfaat untuk membuat beberapa hujah pilihan. Dengan menggunakan ciri argumen lalai, anda boleh menetapkan nilai lalai untuk argumen yang boleh digunakan apabila tiada nilai diberikan oleh kod klien.
Dalam kes anda, anda cuba menggunakan pembolehubah ahli (initPos) sebagai hujah lalai untuk fungsi ahli MoveTo anda. Walau bagaimanapun, pengkompil mengeluarkan ralat yang menunjukkan penggunaan tidak sah ahli data bukan statik.
Pembolehubah ahli tidak boleh diakses dalam skop kaedah secara lalai, kerana ia dianggap sebahagian keadaan objek dan bukan konteks kaedah. Akibatnya, secara lalai argumen dalam fungsi ahli hanya boleh bergantung pada elemen skop dalam kelas atau global.
Untuk menyelesaikan isu ini, anda perlu menggunakan kaedah lebih muatan . Kelebihan kaedah membolehkan anda mencipta berbilang versi kaedah yang sama dengan tandatangan yang berbeza. Begini cara untuk melaksanakannya dalam kod anda:
// Object.h class Object { public: ... void MoveTo(double speed); void MoveTo(double speed, Point position); protected: Point initPos; Point currPos; };
// Object.c void Object::MoveTo(double speed) { MoveTo(speed, initPos); } void Object::MoveTo(double speed, Point position) { // Everything is done here. }
Dengan mentakrifkan dua versi kaedah MoveTo, anda boleh memberikan hujah lalai dengan berkesan tanpa bergantung pada pembolehubah ahli secara langsung. Kaedah MoveTo(double) memanggil kaedah MoveTo(double, Point) dengan nilai initPos sebagai hujah kedua, membolehkan anda mengekalkan fungsi yang diingini dan mengelakkan ralat pengkompil.
Atas ialah kandungan terperinci Bolehkah saya Menggunakan Pembolehubah Ahli sebagai Argumen Lalai dalam Kaedah C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!