在使用template的同时将程序的实现分为源文件与头文件所产生的报错

最近心血来潮突然想试试clion,把之前的一个链表程序迁移过去总是报错,

关键的是这一句:

undefined reference to `mytest<int>::test(int)'collect2.exe: error: ld returned 1 exit status

具体如下:

一开始还以为是cmake哪里搞错了,查了很久资料也没找到问题,最后经测试问题出在template处

简而言之,一般情况下,使用template时代码实现应以内联形式在头文件实现,不能放在源文件实现,即类似以下这种结构

注意:这里只是说一般情况,即也有不在头文件实现的替代方案,但是这是最方便的方案!

百度了很久,最后还是Stack Overflow牛逼,一搜就搜出来了

这里放出两个回答链接,相信看了就懂c++ - Why can templates only be implemented in the header file? - Stack Overflowhttps://stackoverflow.com/questions/495021/why-can-templates-only-be-implemented-in-the-header-file

Standard C++https://isocpp.org/wiki/faq/templates#templates-defn-vs-decl

关键词:clion cmake template class 头文件 源文件 分离实现

undefined reference to / error: ld returned 1 exit status

(虽然好像与有些无关,但是为了让其他像我一样以为是cmake的问题的人搜到,还是这么写吧(doge))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值