Как же в С не хватает указателя `this`!!!
Oct. 12th, 2025 02:00 amПока добавлял работу с SI7005, подумал: а ведь датчики AHTxx практически ничем не отличаются (если не заморачиваться, то вообще одним и тем же кодом можно "обслуживать" и AHT1x, и AHT2x), и если у меня их N на шине одинаковых, то будет проблема со статическими переменными в файле → все это нужно вынести в "класс". А как скрыть члены "класса" от пользователя? Объявить typedef на некую структуру, которая будет объявлена "с подробностями" лишь в "private-header". Собственно, даже в glibc такое делают!
Правда, пришлось достаточно "порефакторить". Еще и в "класс" добавить void*, чтобы туда запихивать все нужные калибровки, промежуточные данные и прочее.
Сильно надеюсь, что больше значимых полей (которые нужно будет не нулем проинициализировать) добавлять не придется. Все-таки, с наследованием в С вообще плохо (хотя, можно заморочиться: при "наследовании" от одного "класса" его можно прямо в начало производного подсунуть, а если нескольких - воткнуть union'ы). А вот указателя this вообще нет! Поэтому во все функции "класса" приходится первым аргументом писать ссылку на сам "класс"…
Вот такая дичь получилась.
Правда, пришлось достаточно "порефакторить". Еще и в "класс" добавить void*, чтобы туда запихивать все нужные калибровки, промежуточные данные и прочее.
Сильно надеюсь, что больше значимых полей (которые нужно будет не нулем проинициализировать) добавлять не придется. Все-таки, с наследованием в С вообще плохо (хотя, можно заморочиться: при "наследовании" от одного "класса" его можно прямо в начало производного подсунуть, а если нескольких - воткнуть union'ы). А вот указателя this вообще нет! Поэтому во все функции "класса" приходится первым аргументом писать ссылку на сам "класс"…
Вот такая дичь получилась.
