Вопрос Раздельная компиляция шаблонного класса, есть ли минусы в моём решение? C++

Регистрация
13 Сен 2013
Сообщения
84
Репутация
0
Спасибо
0
Монет
0
Я пишу свою библиотеку и столкнулся с проблемой раздельной компиляции. Вариант засунуть все определения в *.h файл - не подходит. Сильно раздражает и мешает писать код. Добавлять костыль по типу

template class *; - не подходит. Мои мучения явно не стоят мучений человека, который будет использовать библиотеку, причём настолько незначительные по сравнению с этим. Нашёл следующий вариант: В конце h файла (До #endif header guard-a естественно) подключаю *.cpp файл в котором есть подобие heder guard-a, но только для *.cpp (Если её упустить - ситуация будет такая-же как и с header guard-ом, только если там объявление, то тут определение). Остальное без изменений - в *.cpp файле - подключение *.h файла + определение. В *.h файле - header guard + объявление. Так вот, какие минусы в этом вы видите?
 
ну, ты по сути просто переизобрёл ipp-файлы :)
да, обычно в таких случаях (если прям *совсем* не катит инстанциировать шаблоны для нужных параметров заранее) создают файл с расширением ipp и в нём пишут реализации шаблонных методов класса
и из хедера его обычно не инклюдят, т.к. если не инклюдить, то можно использовать хедер там, где нужны только forward-ы без определений, и тем самым сэкономить немного сборочного времени
 
В C++20 появились модули - которые обеспечивают раздельную компиляцию на уровне самого языка, а не ручного раскидывания кода по h-файлам и cpp-файлам.
В интернете множество материалов по этой теме.
 
Назад
Сверху