Буду рад, если поможете.
В общем есть класс, в нём шаблонный метод:
/* File class_a.hpp */
#ifndef CLASS_A_HPP
#define CLASS_A_HPP
class A
{
private:
int n;
public:
template <typename T>
int foo(T abc);
/* остальные не шаблонные методы */
}
#endif // CLASS_A_HPP
Возникает вопрос. Где написать реализацию метода так, чтобы не в классе и можно было линковать с динамической библиотекой, используя файл class_a.hpp.
В интернете всё как правило сводится к реализации шаблонного метода в .hpp или вынесением реализации в .inl (все не шаблонные мотоды соответственно в .cpp). Но будте ли это работать, если нам дан .hpp и динамическая библиотека для линковки? Подобный вопрос возникает и в случае с inline функциями.
Заранее спасибо.
Пиши в заголовке, прямо ВМЕСТО твоего объявления этого метода
Шаблонный код не может быть экспортирован в явном виде из .dll всё равно, так что твой вопрос вообще лишён смысла.
что такое шаблон? это кусок кода, который превратится компилятором в либо в функцию, либо в класс при подстановке в него конкретных параметров.
твой вопрос вообще лишён смысла.
если на момент конпеляции либы те не знаеш для каких типов нужны реализации шаблона то они и не создадутся
Шаблонный код можно экспортировать из .dll только в одном виде: Инстанциировать шаблон явно и инстанциированный код экспортировать. Но это уже и не шаблон как бы.
Обсуждают сегодня