Цитата
Классы таймеров состоят исключительно из констант (в виде enum'ов) и статических функций. У них нет конструкторов и деструкторов. Так что их можно безопасно создавать в любых количествах.
ну то, что нет деструктора это понятно. А вот конструктор должен быть - надо ведь проинициализировать и "запустить" таймер.
Иначе в начале программы придется все делать руками (типа методы Init() вызывать). Моя задача полность оградить программиста от работы с какой-либо аппаратурой. Т.е. он должен знать, что есть класс "таймер" с известным тиком, экземпляры корого он создает и пользует, есть класс "цифровой потенциометр" в котором он устанавливает значения. А уж какие-там ножки, прерывания задействованы, программный или аппаратный SPI там - это его не должно касаться. Все это прописано в моем хидере, который он просто подключает к проекту. Что-либо править в данном хидере ему нельзя.
Цитата
И вообще они реализуют так называемый 'compile-time полиморфизм'. Вместо таблиц виртуальных методов (для настройки на конкретный таймер) используются шаблоны, которые ориентируются на ИМЕНА констант и функций. Имея несколько типов классов TIMER с одноименными member'ами с разным содержимым, можно настроить TTimer на любой физический таймер
где на это посмотреть?
В принципе я сейчас создал класс таймера (программного), при создании которого конструктору передаю адрес класса аппаратных таймеров. Компилятор молодец - никакого оверхеда! Ну в принципе адреса классов аппаратных таймеров известны на этапе компиляции, так наверное он так и должен был поступить (просто подставить адреса, а не использовать указатель). Плохо то, что неизвестно, можно ли это гарантировать при других уровнях оптимизации например, или смене версии компилятора.