我有一个包含多个模板成员函数的类,我想在几个源文件中分发这些函数以加快编译时间。 (模板是实现细节,不打算在类外使用,因此它们在源代码中的定义不是标题。)
我如何以这样的方式分割这些模板,以至于我不会遇到链接器错误?如果我使用源文件B中定义的模板来源文件A,我如何确保编译器构造适当的模板实例?
答案 0 :(得分:3)
我无法比C ++ FAQ更好地回答它:
https://isocpp.org/wiki/faq/templates#templates-defn-vs-decl
答案 1 :(得分:1)
只是不要将这些模板项声明为头文件中类的一部分。然后,仅在源文件中定义模板。例如:
MyClass.hpp
class MyClass
{
public:
void SomePublicMethod() const;
};
MyClass.cpp
template<class T>
void SomethingWithT(T myVal)
{
// ...
}
void MyClass::SomePublicMethod() const
{
SomethingWithT(42);
}