C++的模板类:不能将定义与声明写在不同文件中

问题来源

今天准备看了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库的时候出现了错误!!

原因

posted @ 2020-02-03 11:35  心田居士  阅读(493)  评论(0编辑  收藏  举报