1

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

我将如何以不会出现链接器错误的方式拆分这些模板?如果我有使用源文件 B 中定义的模板的源文件 A,我如何确保编译器构造了适当的模板实例?

4

2 回答 2

3

我无法比 C++ 常见问题解答更好:
https ://isocpp.org/wiki/faq/templates#templates-defn-vs-decl

于 2010-08-31T17:32:28.233 回答
1

只需不要将这些模板项声明为头文件中类的一部分。然后,仅在源文件中定义您的模板。例如:

我的类.hpp

class MyClass
{
public:
    void SomePublicMethod() const;
};

我的类.cpp

template<class T>
void SomethingWithT(T myVal)
{
    // ...
}

void MyClass::SomePublicMethod() const
{
    SomethingWithT(42);
}
于 2010-08-31T17:39:42.370 回答