@TopToster

Обьявление и Определение Шаблона метода?

Ребят, возник вопросик можно ли закинуть обьявление шаблонного метода класса в .h файл, а его определение в др файл или все в одном? Заранее сорян за туповатый вопросик)
  • Вопрос задан
  • 73 просмотра
Решения вопроса 1
xorknown
@xorknown
Если не вдаваться в подробности компиляции, то можно, но есть свои ограничения. Если вы хотите запихнуть реализацию шаблона в cpp файл, то вам надо инстанцировать его после реализации, чтобы компилятор мог использовать ее в других файлах(в который вы включили хэдер с объявлением). Если хотите перенести реализацию в другой хэдер, то вам необходимо включать его во всех cpp файлах где вы хотите его использовать.

Просто чтобы задуматься. Каждый cpp файл компилируется отдельно от других, и пусть файл с реализацией скомпилируется первым. Как он узнает, для каких шаблонных параметров его надо инстанцировать, если он даже еще не работал с другими файлами? Таким образом когда дойдет до файла в котором вы используете этот шаблон, то нужной вам реализации скорее всего не будет. Поэтому надо вместе с объявлением указывать для каких параметров будет использоваться шаблон. В среднем это не удобно, поэтому так не делают и пишут шаблоны в хэдерах.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@olkhovichs
Можно конечно создать .inl файл. Они служат для реализации inline функций или функций с шаблонными параметрами.
Но лучше всё-таки прописывать реализацию в заголовочных файлах.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы