C++的模板类:不能将定义与声明写在不同文件中
2024-08-30 08:57:49
问题来源
今天看了orbslam2自带的第三方库DBoW2的TemplatedVocabulary.h文件,发现其中模板类的函数成员的定义与声明放在了同一个文件;同时发现,DBoW2的CMakeLists.txt并没有把TemplatedVocabulary.h的实现放入到libDBoW2.so之中。
所以含TemplatedVocabulary.h的文件需要再手动链接TemplatedVocabulary.h需要的库。
既然如此,我就”自作聪明“,新建了TemplatedVocabulary.cpp文件,把TemplatedVocabulary.h的实现写在了其中,在CMakeLists.txt中把TemplatedVocabulary.cpp加入了库文件libDBoW2.so中,这样就不用再手动链接TemplatedVocabulary.h需要的库了。然而,在链接libDBoW2.so库的时候出现了错误!!
原因
模板类需要指定类型,指定不同的类型,函数成员实现就不一样;所以在编译的时候需要根据指定的类型来加载相应的函数实现,而不是链接没有指定类型的库文件模板函数。
最新文章
- HTML 学习笔记 (canvas 基础)
- [ASP.NET MVC 大牛之路]03 - C#高级知识点概要(2) - 线程和并发
- cp命令
- ASP.Net后台 实现先弹出对话框,再跳转到另一个网页的实现方法
- A + B Problem
- android之初识Intent
- C语言实现strcpy
- ios -- NSdata 与 NSString,Byte数组,UIImage 的相互转换(转)
- cryptopp开源库的使用(一):md5加密
- Java---文件的切割与合并,已经实现图形界面(工具)
- 在Service中使用广播接受者
- 几种流行Webservice控制框架
- angularJS ng-change错误的解决方案
- C. Vasya and Robot二分
- ssh 免密码登录(设置后仍需输密码的原因及解决方法)
- JVM 辣鸡回收
- shell编程第五天
- 2017/05/02 java 基础 随笔
- 【Kafka】Kafka-配置参数详解-参数调优
- gnuplot生成MySQL QPS图形