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