Перейти к содержанию
    

Есть ли возможность в наследованном классе изменить содержимое массива родительского класса

22 minutes ago, one_eight_seven said:

std::map

По моим исследованием эта полезная штука занимает ОЗУ, даже если объект объявлен с квалификатором const. Помню, собрал с ним проект для Cortex-M0 по неопытности. Удивился, когда увидел, что байт 80 из 8 кБ куда-то исчезли... Вроде бы не очень много, но это ведь крохотные МК. Им штучки из STL (в некоторых проектах очень даже полезные) нужно применять с осторожностью.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну, тогда стоит ждать c++20, там обещают возможность использования виртуальных методов в качестве constexpr.
Правда, это всё-равно может потребовать явного указания размера для правильной работы, но можно будет создать ссылку на объект внутри класса без явного указания размера.

В том смысле, что для инициализации массива array<typename T, size_t S>, размер S всё-равно нужно будет указывать в явной форме, и автоматически он не вычислится (как и сейчас). А без явного указания std::size() и sizeof() с таким массивом работать не будут. Значит, нужен или терминатор, или какая-то структура, где данные о размере структуры будут храниться внутри объекта, а заполняться автоматически эта структура не может - нужен какой-то метод, который работает только в рантайме.

Изменено пользователем one_eight_seven

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Коллегил, всем огромное спасибо за помощь и желание помочь! Я подумал, и решил, что не буду мудрствовать, а сделаю банально и классически, в стиле си

static const FFWK::Drv::Uart uart1;
static const FFWK::Drv::Uart uart2;
static const FFWK::Drv::Uart uart3;
static const FFWK::Drv::Uart uart4;

static const FFWK::Drv::Base * const s_drvList[] = {
    &uart1,
    &uart2,
    &uart3,
    &uart4,
};

Затем указатель на массив и его размер передам в качестве аргумента в унаследованный класс. А в базовом определю виртуальные функции, которые будут работать с этим указателем. При необходимости, их можно будет перегрузить. Я думаю, мою задача можно решить как-то, как уже тут упомянули с помощью вариативных шаблонов, но мне это пока не под силу. Попробовав, я понял, что там не всё так просто. А есть ведь у меня и другие задачи, требующие решения. Я не могу позволить пока себе много времени на получение "просто красивого" решения. Возможно, в будущем оно придём само) Ещё раз всем благодарность за множество примеров кода, которые открыли мне понимание на некоторые вещи!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...