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类。
为什么?