模板特化是否属于标题或源文件?

Mic*_*ael 19 c++ templates header-files

在编译期间,我得到一个"多重定义"错误,它指的是头文件中的模板特化.我需要将专业化放入源文件中吗?

Bo *_*son 21

如果它是您专门的函数,您可以将它们放在.cpp文件中,或者在标题中将它们内联.

就像James指出的那样,如果你没有内联函数,你仍然需要在头文件中声明特化.否则编译器不知道它必须在别处寻找它们.

然后,您可以将实现(定义)放在.cpp文件中.就像其他功能一样.


Che*_*Alf 10

不,您不需要在单独编译的文件中放置特化,但是,您需要注意专门的函数模板只是一个普通的函数,因为它是完全专业的.

因此,除非声明,否则不能在多个翻译单元中定义inline.