Синглтон производного класса вызывает функцию базового класса, почему не получается?

Итак, я работаю с LPC824, который является кортексом-m0 +. Я пытаюсь сохранить сходство в коде с Arduino и в настоящее время застрял в серийном классе. Прямо сейчас у меня есть серийный класс, который расширяет класс печати, как показано ниже.

Printer.h

class Printer
{
public:
Printer();
unsigned int print(char c);
virtual unsigned int write(char c) = 0;
}

Printer.cpp

#include "Printer.h"Printer::Printer()
{
//Nothing to do yet
}

unsigned int Printer::print(char c)
{
return write(c);
}

serial.h

#include "Printer.h"class Serial : public Printer
{
public:
Serial();
static Serial& Serial0();
unsigned int begin(/*eventually options*/);
unsigned int write(char c);
}

Serial.cpp

#include "Serial.h"#include "uart.h"Serial::Serial()
{
//Nothing to do yet
}

Serial& Serial::Serial0()
{
static Serial inst;
return inst;
}

unsigned int Serial::begin(/*eventually options*/)
{
uart0init(115200, 0x04, 0x00);
}

unsigned int Serial::write(char c)
{
uart0send(c);
}

main.cpp

#include "Serial.h"void main()
{
Serial::Serial0().begin();
while(1)
{
Serial::Serial0().write('a');
Serial::Serial0().print('b');
}
}

Вызов функции записи выведет «а». Когда я тогда вызываю функцию печати, моя программа зависает. Почему я не могу вызвать функцию печати на моем синглтоне, но я могу вызвать функцию записи?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …