@Vadimatorikda
Инженер-программист, embedded разработчик

Как с помощью constexpr C++11 создать const объект, который бы содержал внутри себя массив (const) указателей на объекты другого класса?

Сразу поясню, код пишется для микроконтроллера stm32fx (разные серии) на C++11, toolchain arm-none-eabi.
Имеется некоторый класс A, который создается с помощью constexpr конструктора. В коде объект объявляется глобальным с указанием const. Например так:
const constexpr A a(список_параметров_для_инициализации);

Данный объекты находятся во flash (имеется введу данные, которые есть в объекте, все методы класса так же const).
Далее мне нужно, чтобы другой объект имел внутри себя массив указателей на несколько объектов класса A. В идеале, количество объектов должно быть произвольным.
Вот код, который не работает. Но идея понятна.
class b {
public:
    constexpr b ( const *a... ):
    array_point(a){}
    ~b()=default;
private:
    const array_point[sizeof(a)];
};
  • Вопрос задан
  • 262 просмотра
Решения вопроса 1
@MarkusD Куратор тега C++
все время мелю чепуху :)
Суть вопроса немного туманна. Полностью понять, что тебе нужно, не получается.

Есть техника статической цепочки, ее суть сводится к тому, чтобы на этапе компиляции создать односвязный список объектов, к которым в рантайме требудется получать доступ. Эта техника хорошо реализована в DOOM3 для декларации всех опций движка.
Корень статической цепочки в думе находится вот тут: https://github.com/TTimo/doom3.gpl/blob/master/neo...

А регистрация опций делается так:
https://github.com/TTimo/doom3.gpl/blob/master/neo...

Как видишь, статическая цепочка нужна больше для хранения экземпляров общего интерфейса.
А если тебе надо просто собрать группу статически инициализированных объектов одного типа, то сойти может и такое решение:
cpp.sh/8eco
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 03:52
1000 руб./за проект
19 апр. 2024, в 03:01
1000 руб./за проект
18 апр. 2024, в 21:56
2000 руб./за проект