ไม่มีฟังก์ชันที่ตรงกันสำหรับการโทรหมายถึงเมื่อเราเรียกใช้ฟังก์ชันบางอย่าง แต่ id ของฟังก์ชันนั้นไม่ตรงกับอาร์กิวเมนต์ของฟังก์ชันที่กำหนดไว้ ดังนั้นเราจึงได้รับข้อผิดพลาด 'ไม่มีฟังก์ชันที่ตรงกันสำหรับการโทร' เป็น C ++ เมื่อใดก็ตามที่คอมไพลเลอร์ระบุว่าไม่มีวิธีการที่ตรงกัน โดยทั่วไปจะบ่งชี้ว่าคอมไพเลอร์ระบุวิธีการด้วยชื่อที่เหมือนกันเหมือนกับที่เราให้พารามิเตอร์แก่ฟังก์ชัน
ดังนั้นเมื่อเรายังคงส่งวิธีการที่ระบุประเภทไม่ถูกต้องหรือชุดพารามิเตอร์ที่ไม่เหมาะสมไปยังฟังก์ชัน คำจำกัดความของฟังก์ชันจะระบุชื่อของวิธีการให้กับคอมไพเลอร์ตลอดจนวิธีการเรียกใช้ มีการประกาศเนื้อหาทั้งหมดของฟังก์ชันอย่างชัดเจน ในบทความนี้ เราจะพูดถึงข้อผิดพลาด 'ไม่มีฟังก์ชันที่ตรงกันสำหรับการโทร' ปรากฏใน C ++ อย่างไร
ใช้วัตถุของคลาส
ในสถานการณ์สมมตินี้ พารามิเตอร์ฟังก์ชันไม่ตรงกันในระหว่างการโทร ดังนั้นเราจะพยายามส่งพอยน์เตอร์ที่จำเป็นต้องมีการอ้างอิง และใช้ประเภทการอ้างอิงคลาสที่แตกต่างกันในการเรียกฟังก์ชัน เมื่อใดก็ตามที่เราเรียกใช้ฟังก์ชันแต่คำจำกัดความฟังก์ชันของอาร์กิวเมนต์ไม่ตรงกัน ข้อผิดพลาด 'ไม่มีฟังก์ชันที่ตรงกันสำหรับการเรียก C++' จะปรากฏขึ้น
ตอนนี้เราต้องแก้ไขข้อผิดพลาด เพื่อจุดประสงค์นี้ เราเพียงแค่จัดเตรียมพารามิเตอร์การจับคู่ที่เหมาะสมระหว่างการกำหนดฟังก์ชัน โค้ดพร้อมคำอธิบายโดยละเอียดสามารถดูได้ที่ด้านล่าง

ในตอนเริ่มต้นของโค้ด เราจะรวมไลบรารี
ในบรรทัดถัดไป เราจะเรียกใช้ฟังก์ชันอื่น setValue() วิธีนี้จะเก็บตัวแปร 'ค่า' ไว้เป็นอาร์กิวเมนต์ เราทำการเพิ่มค่าที่ถูกส่งผ่านเป็นอาร์กิวเมนต์ของมัน จากนั้นเราเรียกใช้ฟังก์ชัน main() และเราได้รับ 'argc' ที่มีประเภทข้อมูลจำนวนเต็มและตัวชี้ 'argv' ของประเภทข้อมูลอักขระเป็นอาร์กิวเมนต์ 'argc' คือหมายเลข ของพารามิเตอร์ที่ให้ไว้ในโค้ดจากระบบปฏิบัติการ 'argv' คือชุดของพารามิเตอร์
ตอนนี้เราสร้างวัตถุ 'obj' ของคลาส 'A' เราเรียกใช้ฟังก์ชัน setValue() 'obj' ถูกส่งผ่านเป็นข้อโต้แย้ง แต่เราไม่ได้เชื่อมโยงวัตถุกับชั้นเรียน นั่นคือเหตุผลที่เมื่อเราเรียกใช้ฟังก์ชัน setValue() มันจะส่งคืนข้อผิดพลาดเนื่องจากเราไม่มีคลาสนั้นที่เราเรียกใช้ฟังก์ชัน setValue() ในโค้ดข้างต้น เรากำลังส่งคลาสอ็อบเจ็กต์ภายในอาร์กิวเมนต์การเรียกฟังก์ชัน setValue() แต่ถ้าเราตรวจสอบในคำจำกัดความของฟังก์ชัน setValue() เราจะถือว่าค่าอาร์กิวเมนต์ที่ส่งเป็นจำนวนเต็ม หากต้องการยกเลิกโค้ด เราใช้คำสั่ง 'return 0' ที่นี่สามารถตรวจสอบผลลัพธ์ของโค้ดที่ระบุไว้ข้างต้นได้

เราได้รับข้อผิดพลาด 'ไม่มีฟังก์ชันที่ตรงกันสำหรับการเรียก A' หลังจากรันโค้ดที่กล่าวถึงข้างต้น
จะแก้ไขข้อผิดพลาดนี้ได้อย่างไร
เพื่อแก้ไขข้อผิดพลาดนี้ในระหว่างการเรียกใช้เมธอด เราต้องจัดเตรียมพารามิเตอร์ที่สอดคล้องกับฟังก์ชันให้เพียงพอ อีกวิธีหนึ่งในการแก้ไขข้อผิดพลาดนี้คือการทำให้ฟังก์ชันโอเวอร์โหลดต่างกันมีพารามิเตอร์ต่างกัน ที่นี่เราเพียงแค่แก้ไขอาร์กิวเมนต์ของฟังก์ชัน main() ดังนั้น 'ไม่มีฟังก์ชันที่ตรงกันสำหรับการโทร' ถึงข้อผิดพลาด C ++ จะถูกลบออก โค้ดพร้อมคำอธิบายโดยละเอียดสามารถดูได้ที่ด้านล่าง

หลังจากใช้เนมสเปซมาตรฐานแล้ว เราจะแนะนำไฟล์ส่วนหัว
ในขั้นตอนถัดไป เราจะเรียกใช้เมธอด main() ภายในฟังก์ชัน main() เราจะจัดเตรียม 'argc' ของประเภทข้อมูลจำนวนเต็มและ 'argv' ของประเภทข้อมูลอักขระเป็นอาร์กิวเมนต์ 'argc' แสดงจำนวนพารามิเตอร์ที่ระบบปฏิบัติการให้มาในโปรแกรม 'argv' คือการรวบรวมพารามิเตอร์ ตอนนี้เราจะสร้างวัตถุของคลาส 'A' เรียกว่า 'obj' เราเริ่มต้นตัวแปร 'ค่า' ด้วยประเภทข้อมูลจำนวนเต็ม เราได้ใช้เมธอด setValue() ของออบเจ็กต์และตั้งค่า 'value' เป็นพารามิเตอร์ของฟังก์ชันนี้
ในตอนท้ายเราเพิ่ม 'return 0' เพื่อปิดโปรแกรม โปรดจำไว้ว่าเราต้องป้อนข้อมูลประเภทเดียวกันของฟังก์ชันและอาร์กิวเมนต์ของฟังก์ชันในฟังก์ชัน main() จากนั้นเราได้ส่งฟังก์ชันนั้นไปยังวัตถุแล้วส่งคืน ที่นี่สามารถตรวจสอบผลลัพธ์ของโค้ดที่ระบุไว้ข้างต้นได้
ในบทความนี้ เราได้สำรวจสาเหตุของข้อผิดพลาด 'ไม่มีฟังก์ชันที่ตรงกันสำหรับการโทร' และวิธีแก้ไขปัญหานี้ เมื่อใดก็ตามที่เราได้รับข้อผิดพลาดนี้ เราจะต้องตรวจสอบพารามิเตอร์ของวิธีการที่จำเป็นรวมถึงประเภทข้อมูลด้วย เราทำผิดพลาดในขณะที่ให้ข้อโต้แย้งกับอาร์กิวเมนต์ของฟังก์ชัน เราไม่จับคู่พารามิเตอร์กับฟังก์ชัน เราอาจจำเป็นต้องให้พารามิเตอร์ที่ตรงกันกับวิธีการที่ระบุ หรือเราต้องเพิ่มฟังก์ชันใหม่ที่มีชนิดข้อมูลเดียวกัน หลังจากตรวจสอบและเพิ่มพารามิเตอร์ที่เหมาะสมให้กับฟังก์ชันในโปรแกรมแล้ว ข้อผิดพลาด 'ไม่มีฟังก์ชันที่ตรงกันสำหรับการโทร' จะได้รับการแก้ไข
สวัสดี ฉันเป็นนักเขียนอิสระและมักจะเขียนเกี่ยวกับ Linux และเนื้อหาที่เกี่ยวข้องกับเทคโนโลยีอื่นๆ
บทสรุป
เกี่ยวกับผู้เขียน
คัลซูม บีบี