2012-11-06 37 views
1

我的項目是用C++編寫一個程序,該程序創建用戶定義的列表實現的堆棧和隊列,用於檢查逐字母的迴文和逐字的迴文。所以我需要有一個堆棧和隊列來檢查char和string類型。由於它是一箇中級編程項目(我的C++序列中的第三門課程),我們不能使用STL列表/隊列/堆棧對象,而且我們還沒有學習過模板。但我覺得很煩人必須爲字符串或字符輸入編寫不同的實現,並且想要使用模板。使用模板時無法解析的外部符號

當程序運行得很好時,所有的代碼都在一個文件下 - 類和它們的實現都在我的main.cpp中。但是我將代碼分開,將類定義放入list.h中,並將實現放入list.cpp中,並將驅動程序代碼保存在main.cpp中。

現在,當我跑,我得到這些錯誤:

Error 1 error LNK2019: unresolved external symbol "public: void __thiscall Stack<int>::push_front(int)" ([email protected][email protected]@@[email protected]) referenced in function _main 
Error 3 error LNK2019: unresolved external symbol "public: void __thiscall Queue<char>::push_back(char)" ([email protected][email protected]@@[email protected]) referenced in function _main d:\my documents\visual studio 2012\Projects\DACUNTO_HW5P2_TEMP\DACUNTO_HW5P2_TEMP\main.obj DACUNTO_HW5P2_TEMP 
Error 2 error LNK2019: unresolved external symbol "public: int __thiscall Stack<int>::pop_front(void)" ([email protected][email protected]@@QAEHXZ) referenced in function _main d:\my documents\visual studio 2012\Projects\DACUNTO_HW5P2_TEMP\DACUNTO_HW5P2_TEMP\main.obj DACUNTO_HW5P2_TEMP 
Error 4 error LNK2019: unresolved external symbol "public: char __thiscall Queue<char>::pop_back(void)" ([email protected][email protected]@@QAEDXZ) referenced in function _main d:\my documents\visual studio 2012\Projects\DACUNTO_HW5P2_TEMP\DACUNTO_HW5P2_TEMP\main.obj DACUNTO_HW5P2_TEMP 
Error 5 error LNK1120: 4 unresolved externals d:\my documents\visual studio 2012\Projects\DACUNTO_HW5P2_TEMP\Debug\DACUNTO_HW5P2_TEMP.exe 1 1 DACUNTO_HW5P2_TEMP 

我不知道爲什麼會這樣,但該程序運行正常,當這一切都在一個文件。這裏是我的代碼:

main.cpp中:http://pastebin.com/mQW4EV99

list.h:http://pastebin.com/Lze6jZv2

list.cpp:http://pastebin.com/7bks6Bt1

謝謝

+0

可能的重複[爲什麼我會在使用模板時遇到「未解析的外部符號」錯誤?](http://stackoverflow.com/questions/456713/why-do-i-get-unresolved-external-symbol-errors -when-using-templates) – WhozCraig

回答

1

編譯器希望模板的定義可見,其中用過的。

或者:

  • 移動的定義,類聲明(例如,類似於你的構造爲List
  • #include在.cpp(並更改其擴展你的理智)

當你聽到模板可以增加編譯時間,這是主要原因。

+0

謝謝你的幫助:) –

+0

@RobertJosephDacunto不客氣 – justin