Здравствуйте, cppguard, Вы писали:
C>Нужно написать несколько классов, инкапсулирующих работу с аппаратной частью. Каждый класс обращается к своему устройству, поэтому переиспользования не будет совершенно точно. Первая мысль — класс, где все члены статические. Но потом я вспомнил, что в С++ какие-то сложные правила времени жизни статических объектов, а ещё и может быть сгенерирован код, защищающий от условия гонок. Поэтому вторая мысль — Си-подобный код, спрятанный в namespace. Есть у второго подхода минусы перед первым?
Пиши обычный класс и не компостируй мозг. А синглетон он или статическая переменная, один он будет или десять это не его зона ответственности. Какие ему диапазоны выдали при создании пусть с ними и работает.
struct Serial {
static Serial* create(const char *config);
virtual int read(void* data,int size)=0;
virtual int write(const void* data,int size)=0;
virtual ~Serial(){}
};
...
void usage(Board *board) {
Serial *serial=board->getMainSerialPort();
serial->write("hello\n",6);
}