1. 程式人生 > >編譯模板類時出現的錯誤

編譯模板類時出現的錯誤

我寫了一個模板類,將類宣告和類定義分別放在了.h.cpp,連結的時候就會出現下面的錯誤,所以要將成員函式的定義全部放在.h標頭檔案中。

main.obj : error LNK2001: unresolved external symbol "public: class LinearList<int> & __thiscall LinearList<int>::Delete(int,int &)" ([email protected][email protected]@@[email protected]@Z)

main.obj : error LNK2001: unresolved external symbol "public: bool __thiscall LinearList<int>::Find(int,int &)const " (

[email protected][email protected]@@[email protected])

main.obj : error LNK2001: unresolved external symbol "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,class LinearList<int> const &)" (

[email protected]?$basi

[email protected][email protected]@[email protected]@@[email protected]@[email protected][email protected]@@@Z)

main.obj : error LNK2001: unresolved external symbol "public: class LinearList<int> & __thiscall LinearList<int>::Insert(int,int const &)" (

[email protected][email protected]@@[email protected]@Z)

main.obj : error LNK2001: unresolved external symbol "public: __thiscall LinearList<int>::LinearList<int>(int)" ([email protected]@@[email protected]@Z)

模版類的成員函式程式碼必須寫在h檔案中,不能寫在cpp檔案中,就這麼簡單。你可以看看STL中那麼多模版類,全部都是寫在標頭檔案中的,沒有寫在cpp中的。

因為這個涉及到編譯單元的問題,你在一個編譯單元用到的函式在另一個編譯單元不一定會被例項化。C++標準為了解決這個問題引入了export關鍵字,不過非常不好意思,常用的主流編譯器全都不支援,因此只好把模版全部寫在標頭檔案中。

相關推薦

編譯模板出現錯誤

我寫了一個模板類,將類宣告和類定義分別放在了.h和.cpp,連結的時候就會出現下面的錯誤,所以要將成員函式的定義全部放在.h標頭檔案中。 main.obj : error LNK2001: unreso

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

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

【筆記】libjpeg的移植,make編譯出現錯誤

問題描述: [email protected]:~/decodeporing/jpeg-6b# make./libtool --mode=compile arm-linux-gcc -O2  -I. -c ./jcapimin.c make: ./libtool:命令未找到

編譯qt工程出現qt外掛程序退出錯誤的解決辦法

真名:朱金燦 主要經歷:本科畢業於CUG(武漢)的GIS專業,畢業後參加工作,現在在北京從事軟體開發和團隊管理工作。曾獲有色金屬工業科技進步獎二等獎(獲獎證書連結)。 我的聯絡方式: EMAIL:clever101#163.com 研究方向: 數字影象處理、計算機圖形學。 本部落格內

Spring Data Jpa + Mysql實體自動建立表出現錯誤

實體類Param,設定表名為vbap3_sql_param,在執行之後,出現錯誤,錯誤的建表語句如下。(資料庫是用的Mysql) create table vbap3_sql_param (id bi

用cmd命令列編譯JAVA程式出現“找不到或無法載入主

檢查環境變數配置: JAVA_HOME:D:\Java\jdk1.8.0_91 CLASSPATH:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;(前面有英文點號) Path:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

編譯出現錯誤 -- clang: error: linker command failed with exit code 1 (use -v to see invocation)

出現這個錯誤的原因有多種,常見的是因為某些檔案的缺失或者是檔案的重複導致的。 這類錯誤檢視的關鍵在於其上一行的文字。 對於檔案缺少而導致錯誤的情況: 例如上圖中的示例,其上一行文字為 ld:library not found for -lrxl,可以看出是缺失了某一

使用Dev C++編譯C++工程出現undefined reference 錯誤

我的工程包含三個檔案,Vector模板類的宣告檔案Vector.h和定義檔案Vector.cpp以及主函式main.cpp,具體程式碼如下: // Vector.h #ifndef VECTOR_H #define VECTOR_H #include <iostream>

myeclipse10集成Tomcat6出現錯誤

src log clip tom tomcat ips 配置tomcat lips 得出 myeclipse配置Tomcat時出現錯誤:如圖 tomcat6目錄:如圖 在搜集各種資料後,最終得出結論: 在Tomcat目錄中新建temp文件夾,問題解決。 親測好使。

sql server登錄出現錯誤233

.cn config onf tail 數據 blog 圖形界面 mic .com 同事使用SqlServer出現233錯誤。使用Microsoft SQL Server Management Studio連接1次數據庫之後,斷開再次連接,就會出現233錯誤 查看Windo

yum 下載出現錯誤解決方法

yum1,ping www.baidu.com 驗證你是否能夠上網2,ping 223.5.5.5 ping域名不通,ping外網地址時通了,你的DNS配置有問題。3,修改DNS網卡的配置文件 如: cp /etc/sysconfig/network-scripts/ifcfg-eth0 /t

Eclipse4.7使用基礎 使用快捷鍵導包,遇到不同包下有同名,出現選擇框

cli 提示 初始 win com 出現 導包 eclipse4 2-2 os :windows7 x64 jdk:jdk-8u131-windows-x64 ide:Eclipse Oxygen Release (4.7.0)

安裝vsphere client出現錯誤2229 無法在SQL查詢中加載表”等錯誤

錯誤2229解決辦法:請按照以下步驟繼續進行升級:找到日誌文件 %TEMP%vim-sso-msi.log搜索上次安裝期間作為緩存文件的 *.mst 文件。例如: c:\Windows \Installer\xxxxx.mst找到該 *.mst 文件並將其刪除。重新安裝vsphere client即可本文出自

PyQt5 Pyinstaller出現錯誤Cannot find PyQt5 plugin directories

pyqt5 naconda exceptio when pytho body question http 解決 環境:anaconda+pyqt5 pyinstaller時出現錯誤Cannot find PyQt5 plugin directories 解決方法: 用原生的

VMware啟動Centos出現錯誤Cannot open the disk 'xxxxxxx.vmdk' or one of the snapshot disks it depends on. .

每次 pan 鎖定 mic 數據 als log xxxxxx end   今天拔裝虛擬機的硬盤的時候,沒有關掉虛擬機,導致虛擬打開的時候出現:Cannot open the disk ‘xxxxxxx.vmdk‘ or one of the snapshot disk

跟後臺打印程序系統服務通訊出現錯誤。請打開服務管理單元,確認後臺打印程序服務是否在運行。

term tab 日期 system ice 停用 blog spooler 警告 一: 問題描述: 【錯誤】 跟後臺打印程序系統服務通訊時出現錯誤。請打開服務管理單元,確認後臺打印程序服務是否在運行。事件類型:警告事件來源:TermServD

解決code first Migration 增加外鍵出現錯誤的問題

int require name 增加 length add 刪除 ssa AR 先上模型 Comment public class Comment { [Key] public int CommentId { get; s

Python3 引入sqlite3出現錯誤:ModuleNotFoundError: No module named '_sqlite3'

err error SQ 解決 python re 編譯安裝 簡單的 class under 在Python3 中內置了SQLite3,但是在編譯安裝完之後執行: import sqlite3 出現錯誤: ModuleNotFoundError: No module

[Spring MVC] 表單提交日期轉換問題,比如可能導致封裝實體400錯誤

new tac med tab mat -m bin Edito ack   三種格式的InitBinder @InitBinder//https://stackoverflow.com/questions/20616319/the-request-sent-by-the

Error:cannot import name'is_list_like' --python使用pandas_datareader出現錯誤,解決方案

nbsp class 之前 color error: code 修復 使用 comm   1 import pandas as pd 2 pd.core.common.is_list_like = pd.api.types.is_list_like 在下行代碼之前插入