現象:頭文件聲明 void display();,cpp 實現寫成 void dispaly()(少一個 's'),主函數調用 obj.display(),編譯通過但鏈接報錯 unresolved external symbol display。
display 的定義,發現只有 dispaly,名稱不匹配,報錯 LNK2019。統一拼寫:
// MyClass.h
class MyClass {
public:
void display(); // 正確拼寫
};
// MyClass.cpp
#include "MyClass.h"
void MyClass::display() { // 必須與聲明完全一致
cout << "Hello" << endl;
}
-Wmissing-declarations (GCC) 或 /W4 (MSVC)。此類低級錯誤雖簡單,但極易在大型項目中浪費大量調試時間,養成「聲明定義同步」習慣至關重要。