Создание и использование шаблона исходного файла - PullRequest
1 голос
/ 31 августа 2010

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

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

Ответы [ 2 ]

3 голосов
/ 31 августа 2010

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

1 голос
/ 31 августа 2010

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

MyClass.hpp

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

MyClass.cpp

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

void MyClass::SomePublicMethod() const
{
    SomethingWithT(42);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...