ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
19 апреля
965246 Топик полностью
evgeniy1294 (16.12.2019 16:42 - 23:28, просмотров: 143) ответил _Constantin24 на 1) Наследник? покажите пример.
1) Самый правильный вариант, сделать все следующим образом, например реализация унифицированного интерфейса:  template <size_t rxbuf, size_t txbuf> class UartInterface: protected hal::Interface, protected Pimple { public: ... private: std::array<std::uint8_t, rxbuf> rx; std::array<std::uint8_t, txbuf> tx; Pimple pimple{rx.data(), rx.size(), tx.data(), tx.size()}; ... } Класс Interface - чисто виртуальный, он позволяет одинаково работать с любым интерфейсом. Pimple - private implementation, он содержит реализацию под конкретный интерфейс: uart, spi, i2c и т.д Pimple тоже наследуется от Interface. UartInterface же содержит std::array, размер которых передается в конструктор Pimple. Это сделано для того, чтобы при инстанцировании шаблона UartInterface не плодить лишние функции. А вот так лучше не делать, так как накладных расходов будет больше. template<size_t rxbuf, size_t txbuf> class UartInterface: protected hal::Interface Т.е это как бы сумма вариантов 1 и 2