我有一个类 Base1,其中包含不同类 Base2 的对象数组。我想要一个派生类 Derived1,它继承 Base1 的所有内容,但数组的类型为 Derived2(它是 Base2 的派生类)。例如,这样的事情:
class Base2{
int a2;
};
class Derived2: public Base2{
int b2;
};
class Base1{
Base2* list;
};
class Derived1: public Base1{
Derived2* list;
};
Run Code Online (Sandbox Code Playgroud)
我的理解是,在上面的示例中,Derived1 的对象实际上有两个数组:
list
Run Code Online (Sandbox Code Playgroud)
和
Base1::list
Run Code Online (Sandbox Code Playgroud)
这是我不想要的。
这个想法是,Base1 的所有功能仍应适用于 Derived1 对象,因为 Derived2“是”Base2。这真的很脏,但我想我可以删除[] Derived1 构造函数中的 Base1::list 数组。
有人看到这个问题的解决方案吗?这似乎是经常发生的事情,我不敢相信不存在简单的解决方案。使用模板可以吗?我的想法是否定的,因为 Base1 和 Derived1 中的所有功能都需要知道它们分别处理 Base2 和 Derived2 对象。