如何摆脱完全专用函数模板的多个定义? 我在连接我的C++应用程序的对象时遇到了问题。源文件都编译成目标文件,但其中许多文件依赖于同一个库,该库具有完全专用的函数模板。链接器在试图将它们全部链接在一起时会抱怨。我明白这是为什么,但我不知道如何修复它

如何摆脱完全专用函数模板的多个定义? 我在连接我的C++应用程序的对象时遇到了问题。源文件都编译成目标文件,但其中许多文件依赖于同一个库,该库具有完全专用的函数模板。链接器在试图将它们全部链接在一起时会抱怨。我明白这是为什么,但我不知道如何修复它,c++,linker,static-libraries,C++,Linker,Static Libraries,我发现了,这正好解释了这个问题,但是论坛帖子从来没有达到OP要求解决的程度。呜呜,呜呜 如何编译所有源文件,但只从库中获取一次专用函数?存在的问题是,专用化在头中也有实现,这是错误的 您应该将实现移动到源文件,或者将该方法标记为inline我的印象是(根据:)不应该将模板信息传播到多个文件中。因此内联是唯一的方法吗?这并不是说我有问题,只是想确保我完全理解。@TomThorogood如果你专门化了一些东西,你就不再真正使用模板了。专用模板已经是一个类或函数。未专门化的模板只是一个规则(或框架),

我发现了,这正好解释了这个问题,但是论坛帖子从来没有达到OP要求解决的程度。呜呜,呜呜


如何编译所有源文件,但只从库中获取一次专用函数?

存在的问题是,专用化在头中也有实现,这是错误的


您应该将实现移动到源文件,或者将该方法标记为
inline

我的印象是(根据:)不应该将模板信息传播到多个文件中。因此内联是唯一的方法吗?这并不是说我有问题,只是想确保我完全理解。@TomThorogood如果你专门化了一些东西,你就不再真正使用模板了。专用模板已经是一个类或函数。未专门化的模板只是一个规则(或框架),编译器可以通过(on)构建实际的类或函数