我一直在使用MSVC的中斷,並依稀記得內聯類成員函數沒有問題。然而,當我使用inline關鍵字這樣:inline關鍵字導致鏈接器錯誤2019在Visual C++
//In header file
class A {
public:
inline void funcA(void);
};
//In cpp file
void A::funcA(void) {
}
我得到一個LNK2019,解決的符號(即使功能完全匹配什麼錯誤說缺少)。我試過把頭和定義標記爲內聯,並且發生同樣的事情。在嘗試構建之後,我也刪除了inline關鍵字,並且錯誤一直存在,直到我清理解決方案,之後,所有內容都以非內聯方式生成。沒有人似乎有同樣的問題,當我谷歌的問題,這表明我錯過了一些明顯的事情......但它是什麼?
funcA是否在另一個翻譯單元中使用,而不是它在其中定義的翻譯單元?如果是這樣,這就是導致錯誤的原因,因爲編譯器需要知道定義以便用函數體替換調用。您需要在每個翻譯單元中使用一個相同的定義,因此它應該放在標題中,而不是cpp文件中 –