Имеется базовый абстрактный класс:
class spi_base {
public:
virtual int tx ( параметры ) const = 0;
virtual int rx ( параметры ) const = 0;
virtual ~spi_base() {}
};
Он является базовым для шаблона класса с constexpr конструктором (для гарантии того, что тело конструктора не будет содержать инструкций реального времени выполнения), private константами и mutable переменными (понятное дело, что объект такого класса пойдет в RAM). Все методы шаблона данного класса помечены как const.
template < параметры_шаблона >
class spi_master_hardware_os : public spi_base {
public:
constexpr spi_master_hardware_os ( void );
int reinit ( void ) const;
int tx ( параметры ) const;
private:
void on ( void ) const;
void off ( void ) const;
mutable bool handler_tx_point_inc_cfg_flag = false;
...некоторое_количество_mutable_переменных...
mutable uint32_t number_items = 0;
const spi_cfg< параметры_шаблона > cfg;
};
В коде пользователя объект данного класса создается следующим образом (в файле .cpp):
const spi_master_hardware_os< параметры_шаблона > spi1;
Вопрос в следующем. Как можно объявить const объект шаблонного класса так, чтобы в разных CPP файлах был использован один и тот же объект?
Поясню. Если я объявлю (точно таким же образом) данный объект в .h файле и буду использовать его методы в двух разных .cpp (в которых есть include этого .h файла) то каждый CPP файл работает со своей копией этого объекта (что мне совершенно не нужно).