小编Car*_*arl的帖子

C++ 更改派生类中的成员类型

我有一个类 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 对象。

c++ inheritance overloading

6
推荐指数
1
解决办法
7284
查看次数

标签 统计

c++ ×1

inheritance ×1

overloading ×1