【发布时间】:2020-11-30 14:56:40
【问题描述】:
在下面的示例中尝试在派生类之间共享公共代码时遇到问题:
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
};
在上面的示例中,CompWrite(或SpecialCompWrite)对象应该能够访问Write 类的所有功能,以及在SpecialWrite 类中被覆盖的setup() 实现。
限制是,我无法将 setup 函数从 SpecialWrite 类提升到 Write 类或 BaseWrite 类。如果它有助于上下文,“Special*”类位于单独的文件中,并在构建项目时有条件地包含在内。
一种方法是我可以简单地覆盖SpecialCompWrite 类中的setup 函数,并从SpecialWrite 类复制代码。但我试图避免这种情况。
【问题讨论】:
-
I cannot move up the setup function from SpecialWrite class to the Write class or BaseWrite class.为什么?
标签: c++ oop inheritance