Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ข้อผิดพลาดของสัญลักษณ์ภายนอกที่อ้างอิง/ไม่ได้รับการแก้ไขใน C++ ที่ไม่ได้กำหนดไว้คืออะไร


ตามชื่อที่แนะนำ สัญลักษณ์ที่คุณประกาศไม่ได้ถูกกำหนดโดยคุณ สิ่งนี้อาจเกิดขึ้นเนื่องจากหลายกรณี เรามาดูกันดีกว่าสามคน -

  • คุณลืมกำหนดชื่อที่ประกาศ ตัวอย่างเช่น คุณประกาศฟังก์ชันในไฟล์และใช้งานที่ไหนสักแห่ง แต่คุณไม่ได้ให้คำจำกัดความ รหัส -

#include<iostream>
void foo();
int main() {
   foo(); // Declared but not defined
}
  • คุณกำหนดไว้แต่ไม่ได้ใช้ชื่อที่ผ่านการรับรอง สมมติว่าคุณสร้างคลาสด้วยเมธอดและกำหนดเมธอดนั้น แต่ลืมใช้การแก้ไขขอบเขตเพื่อเชื่อมโยงฟังก์ชันนั้นกับคำจำกัดความนั้นและใช้ฟังก์ชันนั้นที่ไหนสักแห่ง ตัวอย่างเช่น

#include<iostream>
class A {
   void foo();
};
void foo() { } // should have used A::foo
int main() {
   A a;
   a.foo(); // Not defined!
}
  • คุณไม่ได้รวมการขึ้นต่อกันในลำดับที่ไม่ถูกต้อง ตัวเชื่อมโยงพยายามเชื่อมโยงในลำดับที่คุณระบุ ดังนั้นในกรณีที่คุณใช้วิธีการก่อนคำจำกัดความก็มักจะทำให้เกิดข้อผิดพลาดนี้

ไม่สามารถสร้างรายการเงื่อนไขที่อาจทำให้เกิดข้อผิดพลาดนี้ได้ แต่คุณสามารถอ้างอิงถึงโพสต์นี้สำหรับรายการสาเหตุที่เป็นไปได้ที่ได้รับการดูแลจัดการอย่างดี - https://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved-external-symbol-error-and- วิธีแก้ไข