跨源文件模板实例化和使用

时间:2010-08-31 17:22:03

标签: c++ templates distribution construction

我有一个包含多个模板成员函数的类,我想在几个源文件中分发这些函数以加快编译时间。 (模板是实现细节,不打算在类外使用,因此它们在源代码中的定义不是标题。)

我如何以这样的方式分割这些模板,以至于我不会遇到链接器错误?如果我使用源文件B中定义的模板来源文件A,我如何确保编译器构造适当的模板实例?

2 个答案:

答案 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);
}