C++ 在C+中的派生类之间共享公共代码+;

C++ 在C+中的派生类之间共享公共代码+;,c++,oop,inheritance,C++,Oop,Inheritance,在下面的示例中,我在尝试在派生类之间共享公共代码时遇到问题: class BaseWrite { public: virtual void setup() {} }; class Write : public BaseWrite { public: void show() { cout << "Show Write" << endl; } virtual void print() {

在下面的示例中,我在尝试在派生类之间共享公共代码时遇到问题:

class BaseWrite {
    public:
    virtual void setup() {}
};

class Write : public BaseWrite {
    public:
    void show() {
        cout << "Show Write" << endl;
    }
    virtual void print() {
        cout << "print Write" << endl;
    }    
};

class CompWrite : public Write {
    public:
    void compFunc() {
        cout << "compFunc details" << endl;
    }
};

//These below "Special" classes are in a separate file and are conditionally included while building the project

class SpecialWrite : public Write {
    public:
    void setup() override {
        cout << "print SpecialWrite setup()" << endl;
    }
};

class SpecialCompWrite : public CompWrite {
    public:
    //any common functions
};
类BaseWrite{
公众:
虚拟空设置(){}
};
类写入:公共BaseWrite{
公众:
无效显示(){

cout如果
CompWrite
可以访问
SpecialWrite
中的所有公共函数,则多重继承可以解决此问题,但这两个类都继承自
Write
,因此继承必须更改为虚拟,
CompWrite
类将如下所示:

class CompWrite : public Write, public SpecialWrite {
如果
setup()
函数是唯一需要访问的函数,那么
SpecialWrite
CompWrite
继承的新类可能会解决这个问题

class SetupWrite : public Write {
    public:
    void setup() override {
        cout << "print SpecialWrite setup()" << endl;
    }
};

...

class CompWrite : public SetupWrite {
    public:
    void compFunc() {
        cout << "compFunc details" << endl;
    }
};

...

class SpecialWrite : public SetupWrite {
    public:
    // Other functions
};
类SetupWrite:公共写入{
公众:
void setup()覆盖{

我无法将设置函数从SpecialWrite类向上移动到Write类或BaseWrite类。
为什么?