如何在C ++中使用2个继承的类或同时使用这两个类?

我有一个从打印类继承的显示类,用于其功能重载

class Print {
    virtual size_t write(uint8_t) = 0;
    void write(const uint8_t *buffer, size_t size) {
      while (size--) {
        write(*buffer++);
      }
    }
   //other print functions (e.g. println())
}

class display : public Print {
  public:
    uint8_t _displayBuffer[512];
    //other display variables
    void update() {
       //write buffer to screen
    }
    size_t write(uint8_t char) {
       //print to buffer
    }
}

但是我还希望有一个功能可以直接显示在屏幕上(有限制),而这样做的一种方法是像这样创建一个新类。

class displayDirect : public Print {
  public:
    //display variables
    void update() {
       //do nothing
    }
    size_t write(uint8_t char) {
       //print to screen
    }
}

但是有时不希望直接打印功能有局限性,我想在它们之间切换,因此,在一次非常绝望的尝试中,我只复制了所有打印功能以进行直接打印

class display : public Print {
  public:
    uint8_t _displayBuffer[512];
    //other display variables
    void update() {
       //write buffer to screen
    }
    size_t write(uint8_t char) {
       //print to buffer
    }

    size_t writeDirect(uint8_t char) {
       //print to screen
    }
    void writeDirect(const uint8_t *buffer, size_t size) {
      while (size--) {
        write(*buffer++);
      }
    }
    //all the other print functions
}

这样,我可以在使用printDirect()函数时使用屏幕缓冲区来做其他事情,然后在使用完内存后切换回去。

我必须将print类中的许多print()函数复制并重命名为printDirect()。我觉得必须有更好的方法来做到这一点。

我不想创建两个类,因为那样的话,显示变量的重复将浪费内存,并可能导致屏幕问题。理想情况下,我想在程序中间从同一个打印类继承的两个类之间切换。