编译模板类时出现的错误

我写了一个模板类,将类声明和类定义分别放在了.h.cpp,链接的时候就会出现下面的错误,所以要将成员函数的定义全部放在.h头文件中。

main.obj : error LNK2001: unresolved external symbol "public: class LinearList<int> & __thiscall LinearList<int>::Delete(int,int &)" (?Delete@?$LinearList@H@@QAEAAV1@HAAH@Z)

main.obj : error LNK2001: unresolved external symbol "public: bool __thiscall LinearList<int>::Find(int,int &)const " (?Find@?$LinearList@H@@QBE_NHAAH@Z)

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 &)" (??6@YAAAV?$basi

c_ostream@DU?$char_traits@D@std@@@std@@AAV01@ABV?$LinearList@H@@@Z)

main.obj : error LNK2001: unresolved external symbol "public: class LinearList<int> & __thiscall LinearList<int>::Insert(int,int const &)" (?Insert@?$LinearList@H@@QAEAAV1@HABH@Z)

main.obj : error LNK2001: unresolved external symbol "public: __thiscall LinearList<int>::LinearList<int>(int)" (??0?$LinearList@H@@QAE@H@Z)

        模版类的成员函数代码必须写在h文件中,不能写在cpp文件中,就这么简单。你可以看看STL中那么多模版类,全部都是写在头文件中的,没有写在cpp中的。

因为这个涉及到编译单元的问题,你在一个编译单元用到的函数在另一个编译单元不一定会被实例化。C++标准为了解决这个问题引入了export关键字,不过非常不好意思,常用的主流编译器全都不支持,因此只好把模版全部写在头文件中。

IIS5.1安装说明: 一: IIS 5.1版本适用于Windows XP_SP1、XP_SP2、XP_SP3 二: ISS 5.1安装步骤(各版本IIS都可以按照该方法安装,以IIS5.1安装至Windows xp_SP3为例) 1.依次打开 左下角的"开始"菜单----控制面板----选择"添加/删除程序",打开"添加/删除程序"窗体 ----点击窗体左侧"添加/删除Windows组件"(A) 2.解压IIS 压缩包,在打开的"Windows组件向导"窗体中,将"Internet 信息服务(IIS)"前面 小方框钩选上----点击下一步-----在弹出的"插入磁盘"窗体中,点击"确定"按扭------ 将解压后的IIS 5.1路径(如D:\飞翔下载\IIS\iis5.1xp)复制到"文件复制来源"输入框中, 如再遇到需要"插入光盘"之类的提示,继续粘贴该IIS路径即可,直到完成安装,当出现安装 完成提示按扭,点击"完成"按扭关团向导,即可完成安装. 三: 问题及解决方案 1.IIS安装过程中,如果出现某些文件无法复制,则可能是该IIS不适合你的系统,请换一个 对应于系统的IIS,IIS版本说明如下. Windows XP_SP1 ,XP_SP2 ,XP_SP3 系统 适用 IIS5.1版本 Windows 2000 系统 适用 IIS5.0 版本 Windows server 2003系统 适用 IIS 6.0 版本 Windows Server 2008 ,Vista 系统 适用 IIS 7.0 版本 2.能完成IIS的安装即无法正常使用等问题,部分原因如下 可能与迅雷等网络工具TCP 端口产生冲突,打开控制面板----双击"性能和维护"打开--- "管理工具"----"Internet 信息服务"---"网站"---"选择"默认网站"右击---选择"属性" 菜单---在默认网站属性窗体分页框内选择"网站"标题---"TCP 端口" ----设为80即可完 成(IIS 默认80端口.如果使用其它端口,如8080,测试需http://localhost:8080). 3.IIS 80端口被占用的解决方法 cmd 命令窗口----输入netstat -abn ->c:/port80.txt然后到c盘port80.txt文件中找到 占用80端口的程序pid,记下pid.打开任务管理器,点击"查看"/选择列,勾选"PID(进程标识 符)",然后单击"进程"标签,找到80端口对应的pid,就可以看到是哪个程序占用的了,更改 这个程序的port,再重启这个程序,使更改生效.再次启动iis.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值