Эксирование и использование шаблона файла перекрестного исходного файла

StackOverflow https://stackoverflow.com/questions/3611533

Вопрос

У меня есть класс с несколькими функциями шаблонов, которые я хотел бы распространить среди нескольких исходных файлов для ускорения времени компиляции. (Шаблоны являются деталями реализации и не предназначены для использования за пределами класса, поэтому их определение в источниках не заголовки.)

Как бы я пошел о расщеплении этих шаблонов таким образом, что я не получу ошибки линейки? Если у меня есть исходный файл A, используя шаблон, определенный в исходном файле b, как мне убедиться, что соответствующий экземпляр шаблона создан компилятором?

Это было полезно?

Решение

Я не мог ответить на это лучше, чем FAQ C ++:
https://isocpp.org/wiki/faq/templates#Templates-defn-vs-decl.

Другие советы

Просто не объявляйте эти элементы шаблона как часть класса в заголовочном файле. Затем определите свои шаблоны только в исходном файле. Например:

Myclass.hpp.

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

Myclass.cpp.

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

void MyClass::SomePublicMethod() const
{
    SomethingWithT(42);
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top