Запретить многократную компиляцию кодов шаблонов C++. ⇐ C++
-
Anonymous
Запретить многократную компиляцию кодов шаблонов C++.
Я написал шаблон очереди сообщений на C++ и хочу использовать его во многих разных проектах, чтобы поместить его в пространство имен, например my_lib.
Чтобы предотвратить повторную компиляцию кодов, я использовал отдельный транс-модуль для явного создания его экземпляра (и получения только одного obj-файла) и просто включал его заголовок везде, где он задействован.
Но он используется в другом пространстве имен, например business.
Скелет моего кода выглядит следующим образом:
mq-template.hpp:
#pragma один раз пространство имен my_lib { шаблон класс GenericMQ_t { структура Node_t { SIZE_TYPE _head; SIZE_TYPE _хвост; Т _данные; }; SIZE_TYPE _size {}; Node_t* _buff {}; публика: недействительная отправка (const T&); }; }; // пространство имен my_lib mq-template.tpp(обратите внимание на суффикс):
#include "mq-template.hpp" пространство имен my_lib { шаблон void GenericMQ_t::send(const T&) { // просто для примера std::cout
Я написал шаблон очереди сообщений на C++ и хочу использовать его во многих разных проектах, чтобы поместить его в пространство имен, например my_lib.
Чтобы предотвратить повторную компиляцию кодов, я использовал отдельный транс-модуль для явного создания его экземпляра (и получения только одного obj-файла) и просто включал его заголовок везде, где он задействован.
Но он используется в другом пространстве имен, например business.
Скелет моего кода выглядит следующим образом:
mq-template.hpp:
#pragma один раз пространство имен my_lib { шаблон класс GenericMQ_t { структура Node_t { SIZE_TYPE _head; SIZE_TYPE _хвост; Т _данные; }; SIZE_TYPE _size {}; Node_t* _buff {}; публика: недействительная отправка (const T&); }; }; // пространство имен my_lib mq-template.tpp(обратите внимание на суффикс):
#include "mq-template.hpp" пространство имен my_lib { шаблон void GenericMQ_t::send(const T&) { // просто для примера std::cout
Мобильная версия