1. 程式人生 > >關於函式模版編譯出現連結錯誤

關於函式模版編譯出現連結錯誤

問題在於分離編譯,將類.h.cpp分離編譯便會出錯產生如此的錯誤 (編譯不出錯連結出錯):

Test.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall Tree<int>::~Tree<int>(void)" ([email protected]@@[email protected])

查資料說是連結實體在多個檔案連結時產生多義錯誤,解決方法就是將定義與實現寫在一起(建構函式與解構函式別忘加”{}”)

多數編譯器不支援類模板分離編譯,所以類模板直接在宣告時定義就不會出現上述錯誤了

凡是形如此類的錯誤基本都是因為函式定義出問題

.h與.cpp分離編譯,mian函式只include了.h而沒有.cpp有時也會出現如上的錯誤

所以如果出現上述錯誤就先檢查類中函式在定義上是否出現問題

------------------------------------------------------------------------------------------------------------------------------------

在書的附錄處發現有方法進行類模板分離編譯:

在.cpp檔案中如此書寫即可:

template <typename Obj>
Hen<Obj>::Hen()
{ ... }

特別的,即使在模板被例項化時也沒有被擴充套件,只有每個成員函式被呼叫時才會擴充套件

相關推薦

關於函式模版編譯出現連結錯誤

問題在於分離編譯,將類.h與.cpp分離編譯便會出錯產生如此的錯誤 (編譯不出錯連結出錯): Test.obj : error LNK2001: unresolved external symbol

Qt Creator 編譯 ROS 包出現連結錯誤解決辦法

若編譯過程中,出現 cannot find -ltf cannot find -lroscpp ... 主要是因為 Qt 編譯 ROS 後連結環節出現問題,主要原因是 Qt 啟動時沒有載入 ROS 相關的環境變數,解決辦法如下: sudo vim /usr/share/ap

keil 編譯通過 連結錯誤 解決

今天試了一個nordic sdk5_12.3的例子,開啟後編譯連結,結果編譯通過,連結卻提示有4個函式沒有宣告,但是回頭再看檔案,明明有引用標頭檔案啊,,為什麼還不過呢?我又試了使用extern宣告還是不行。 linking... .\_build\nrf51422_xxac.axf: Er

VC2008編譯出現error2664錯誤:Format(const wchar_t *,...)”:不能將引數 1 從“const char [4]”轉換為“const wchar_t *”

void scesjk::OnBnClickedButton1()              //資料記錄 {     // TODO: 在此新增控制元件通知處理程式程式碼     UpdateData(true);     m_set.Open();     m_set.A

opencv3.2安裝成功,但使用VideoCapture時出現連結錯誤

opencv3.2 已經在Ubuntu14.04安裝成功了; 使用VideoCapture時出現連結出錯 //usr/local/lib/libopencv_videoio.so: undefined reference to `[email protected

Linux下使用-static -lpthread靜態編譯出現錯誤(Segmentation fault)

最近在看golang,感覺go的靜態編譯思想很不錯。於是準備把手頭的幾個專案靜態編譯一下,結果編譯的時候沒報任何警告及錯誤,一執行就報段錯誤(Segmentation fault)。gdb逐步除錯,發現問題出在std::thread那裡。仔細檢查了下所有語法,沒

用Latex排版論文(3)《控制與決策》初稿LaTex模版編譯出現"\bibname undefined"解決辦法

    師姐要投NEU辦的《控制與決策》,我幫忙用LaTex排版。我下載了《控制與決策》官網提供的模板之後,嘗試編譯了一下,結果出現“\bibname undefined”的錯誤。官網給出了一個解決這個問題的辦法如下:     我嘗試了一下這個方法,要改的地方不只這一個問

wincap4.11在vc6下編譯出現_W64錯誤【解決方法】

別人問題以及解答: winpcap 4.1.1在vc6下編譯會出現以下錯誤,原因是vc6.0並不完美支援c++99標準,在64位cpu中編譯會有問題,將winpcap開發包換到4.0.1版本及以下錯誤消失 c:/wpdpack/include/pcap-stdinc.h(79) : error C2144

Android之ndk編譯出現這個錯誤error: unused variable 'a' [-Werror=unused-variable]

1、問題 在jni裡面就加了一行程式碼 編譯的時候出現這個錯誤 error: unused variable 'a' [-Werror=unused-variable] 2、解決辦法 找到相應的Ma

Eclipse工程檔案拷貝到Android Studio下,編譯出現亂碼錯誤

錯誤如截圖所示: 【錯誤原因】:Eclipse中utf-8編碼帶有BOM Header位元組,載入到Android Studio中時,被轉換為utf-16導致該問題出現,如截圖右下角所示UTF-16

Linux中 qt 編譯出現tslib錯誤

Toreconfigure, run 'gmake confclean' and 'configure'. You havenot explicitly asked to use pkg-config and are cross-compiling. pkg-confi

caffe2ncnn編譯出現DetectionOutputParameter錯誤的解決方法

使用ncnn 20171017這個版本,之後的版本會出現DetectionOutputParameter這個函式,不知道這個函式是caffe哪個版本引進來的,目前解決辦法就是換ncnn版本,protobuf使用2.6.1這個版本,編譯連結就沒有錯了,如下圖:

網狐榮耀前臺網站編譯出現找不到服務器‘RYAccountsDBLink’錯誤解決

ima clas nts es2017 count div 9.png .com img 網狐榮耀前臺網站編譯出現找不到服務器‘RYAccountsDBLink’錯誤解決

Python編譯出現錯誤SyntaxError: Non-ASCII character 'xe7' 時解決方法

mage wan tps png art tail error: itl 解決 轉載個解決辦法:https://blog.csdn.net/wangchao701123/article/details/57084244 轉自https://blog.csdn.net/jim

解決 Maven項目進行編譯( mvn compile )時出現錯誤

mvn alt odi 1.8 compiler style spa bubuko version 錯誤信息: 在 pom.xml 文件 設置一下Maven的屬性 1 <!--Maven 屬性--> 2 <propertie

解決用cmake編譯與opencv相關的工程出現錯誤

  利用cmake編譯opencv相關工程時會彈出對話方塊,提示錯誤,紅色提示cmake找不到opencvconfig.cmake之類。   原因:cmake的OpenCV_DIR路徑為空,新增相應的路徑即可(就是下面紅色的目錄樹,點開找到右面那裡填入路徑)。   解決方案:在OenCV_DIR處新增 .

notepad++編輯器寫Java程式碼,無法編譯出現錯誤:編碼GBK的不可對映字元

所報錯誤:編碼GBK的不可對映字元 解決方案:  1.英文版notepad++    選單:Configure --> Options --> JDK Tools --> Compiler

Android編譯出現com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536錯誤解決辦法

踩過的坑, 以下操作,必須在app module中進行。 ========================================== ** Android編譯出現com.android.dex.DexIndexOverflowException: method ID not i

ROS cmake編譯出現重複定義main函式解決方法

add_executable(map_engine_node  src/listener.cpp src/map_engine_node.cpp) add_executable這個命令是用來生成一個可執行檔案的,原始檔可以有多個,但其中只能有一個主函式,就跟VS裡面的工程一樣,但是我誤

【我的Android進階之旅】解決編譯出現錯誤:Error: In DataSet 'main', no data file for changedFile.

一、問題描述 晚上在Android Studio上,切換分支之後,重新編譯執行的時候,報錯了,錯誤資訊如下所示: 錯誤資訊文字: FAILURE: Build failed with an excep