Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
在编译期间,我收到“多重定义”错误,它指的是头文件中的模板特化。我需要将专业化放入源文件吗?
如果它是您专门化的功能,您可以将它们放在 .cpp 文件中,或者将它们内联在标题中。
就像 James 指出的那样,如果你不使函数内联,你仍然必须在标题中声明特化。否则编译器不知道它必须在别处寻找它们。
然后,您可以将实现(定义)放入 .cpp 文件中。就像其他功能一样。
不,您不需要将特化放在单独编译的文件中,但是,您需要注意特化函数模板只是普通函数,因为它是完全特化的。
因此,除非声明它,否则它不能在多个翻译单元中定义inline。
inline