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);
Как сделать так чтобы у наследованного класса появились конструкторы базового?
фу имена с подчёркивания
using T::T;
class SerialLogger : public ILogging, public Singleton<SerialLogger> {... разве что вот-такое что-то пока на ум приходит
Обсуждают сегодня