หมายเหตุนี่ไม่ใช่คำถามเกี่ยวกับวิธีการใช้ฟังก์ชันแบบอินไลน์หรือวิธีการทำงานอีกต่อไปว่าทำไมพวกเขาถึงทำในแบบที่เป็นอยู่
การประกาศฟังก์ชันสมาชิกคลาสไม่จำเป็นต้องกำหนดฟังก์ชันเนื่องจากinline
เป็นเพียงการนำฟังก์ชันไปใช้งานจริงเท่านั้น ตัวอย่างเช่นในไฟล์ส่วนหัว:
struct foo{
void bar(); // no need to define this as inline
}
เหตุใดการใช้ฟังก์ชันคลาสแบบอินไลน์จึงต้องอยู่ในไฟล์ส่วนหัว? เหตุใดฉันจึงไม่สามารถใส่ฟังก์ชันอินไลน์ใน.cpp
ไฟล์ได้ ถ้าฉันพยายามใส่คำจำกัดความแบบอินไลน์ใน.cpp
ไฟล์ฉันจะได้รับข้อผิดพลาดตามบรรทัดของ:
error LNK2019: unresolved external symbol
"public: void __thiscall foo::bar(void)"
(?bar@foo@@QAEXXZ) referenced in function _main
1>C:\Users\Me\Documents\Visual Studio 2012\Projects\inline\Debug\inline.exe
: fatal error LNK1120: 1 unresolved externals
inline
ปรากฏในความหมาย แต่ไม่ประกาศก่อนเทียบกับในทางกลับกัน ถ้าเป็นเช่นนั้นสิ่งนี้อาจช่วยได้: stackoverflow.com/questions/4924912/…