Re: Статический класс или namespace для singleton?
От: kov_serg Россия  
Дата: 20.07.23 22:57
Оценка: 2 (2)
Здравствуйте, 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);
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.