ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
22 июля
1200385
Argon (16.04.2022 19:14, просмотров: 563)
Знатоки C++, нужна подсказка! Линкер (GNU++17) не видит статические объекты базового класса. 

Суть вкратце такая:
Есть класс Module, в к-ром объявлен статический объект

static CAN_TxQueue_t CAN_TxQueue;    // тип CAN_TxQueue_t определен ранее через typedef


и статический метод, возвращающий указатель на него:

static CAN_TxQueue_t* getCAN_TxQueue(void) {

return &CAN_TxQueue;

}

Класс Module является базовым для наследования другими классами. Но, наверное, не суть.

Отнаследованные объекты создаются в классе-синглтоне через new.

В этом классе-синглтоне есть метод, возвращающий указатель на пресловутый статический объект через вызов статического метода

CAN_TxQueue_t* getCAN_TxQueue(void) {

return Module::getCAN_TxQueue();

}

Ну и вот, не имея претензий к синтаксису IDE (STM32CubeIDE) выдает ошибки линкера вида

undefined reference to `Module::CAN_TxQueue'

Какую тему копнуть?