1. 程式人生 > >C++中“已經在 test.obj 中定義”的錯誤

C++中“已經在 test.obj 中定義”的錯誤

在使用模板過程中,容易發生這樣的錯誤。


錯誤原因如下:

1.模板類的申明和實現要在一個檔案裡面。當我們所有實現都是用模板時,我們會知道應該放在一個檔案裡面,不會範錯誤。但如果有的用了模板,而有的沒用模板的時候,這個時候就容易出現問題了。如果把申明放在.h,實現在.cpp中就會出現這樣的問題;如果不管是不是模板函式,都放在一個.h檔案裡,也不會發生錯誤,但後面所有使用該類的程式都得放在一個檔案裡,後面誰又能保證呢。所以放在一個檔案裡並不是完全解決之道。

最好的解決方法是:普通函式放在.cpp裡,但模板函式放在.h裡面,不一定是放在類裡面,放在類申明的後面就可以了。