沒法解析的外部符號

今天心血來潮,想練習一下模版類,結果老是出現若是在編譯模板類時出現錯誤:「error LNK2019: 沒法解析的外部符號 ...」,由錯誤信息能夠知道,是鏈接的時候出錯,搞了半天原來是個人模版類的聲明和定義沒有放在一個文件裏面。函數

解決方法有兩個:spa

第一種方法是在主文件(main文件)中既包含類模板的聲明文件(接口文件)(.h文件),同時也包含類模板的實現文件(.cpp文件)就好了。接口

第二種方法,就是把類模板中成員函數的聲明和定義都放在類的定義中(.h文件),不要分開就行編譯器

 

應該採用第二種方法,由於當實例化一個模板時,編譯器必須看到模板確切的定義,而不單單是它的聲明。所以,最好的辦法就是將模板的聲明和定義都放置在同一個.h文件中。這就是爲何全部的STL頭文件都包含模板定義的緣由。
編譯

相關文章
相關標籤/搜索