170 похожих чатов

Вопрос - есть абстрактный класс Stream: class Stream : public FileLike,

private NonCopyable<Stream> {
...
protected:
virtual int _putc(int c) = 0;
virtual int _getc() = 0;
virtual void lock()
{
}
virtual void unlock()
{
}
...
от этого класса наследуются классы в которых уже конкретная реализация Serial порта, например
class USBSerial: public USBCDC, public mbed::Stream
{...}

Как мне сделать так чтобы я определил перегрузку lock()/unlock() в одном месте и для всех классов наследников Stream ее использовал?
Думал что-то вроде такого, но ругается что я не определил в этом классе конструктор с нужной сигнатурой
template <typename T>
class MySerial : public T {
protected:
void lock(void) override { mutex_.lock(); }
void unlock(void) override { mutex_.unlock(); }
private:
Mutex mutex_;
};

конструкторы могут быть разные - в зависимости от реализации, например:
Serial pc_serial(PC_6, PC_7, 250000);
USBSerial pc_serial(true, 0x1f00, 0x2012, 0x0001);

Как сделать так чтобы у наследованного класса появились конструкторы базового?

3 ответов

2 просмотра

фу имена с подчёркивания

using T::T;

Alex- Автор вопроса

class SerialLogger : public ILogging, public Singleton<SerialLogger> {... разве что вот-такое что-то пока на ум приходит

Похожие вопросы

Обсуждают сегодня

коллеги, добрый вечер! А никто не знает как модальная форма может себя закрыть? Ну допустим модальная форма определила, что смысла ей работать нет и хочет вернуть modalResult...
Михаил
83
А какие у этого try практические плюсы перед eval?
Oleg Volkov
41
Hi there everyone Is there anyone who have not started hamster bot yet? I need only one, I'll be glad if you do this for me DM if you haven't yet
Mehrshad
53
Скажите, либо я тупой, либо непонятно что. Представьте что в регистре AX = 7FFF (в десятичной системе это число 32767), а в регистре BX = 0FFF (в десятичной системе это -1). У...
Rusplay
19
Привет всем, подскажите что тут не так? Выдает ошибку, что DataSet активен.
Alexander
14
Ребят, привет. Интересует вопрос: есть ли способ получить доступ к WebView в Linux? Рылся-ковырялся, решения не нашел. Объясню сразу задачу, возможно, скажете, что копаю не в...
advanc3d
13
вышел новый лазарус 3.4.0 кто пользовался? что нового? на что обратить внимание? итд
livontiy
22
Что нового в Xcode 16 Xcode 16 приносит много обновлений. Главное - появление ИИ, которое отметили еще в кейноуте. В Xcode появится предиктивное завершение кода, основанное н...
✌️(´ヮ`)
1
Здравствуйте, надеюсь найти ответ, при выполнение программы все работает, но добавим на форму элемент, при новом запуске остается то что было до изменения, новой кнопки, разме...
Стивен Хикс
15
А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
Карта сайта