gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 20:30:35 25 4
gpt4 key购买 nike

我有一个类 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;
};

我的理解是,在上面的示例中,Derived1 的对象实际上有两个数组:

list

Base1::list

我不想要。

想法是 Base1 的所有功能仍然适用于 Derived1 对象,因为 Derived2"is"Base2。这真的很脏,但我想我可以在 Derived1 构造函数中删除 [] Base1::list 数组。

有人看到这个问题的解决方案吗?这似乎是经常发生的事情,我不敢相信不存在简单的解决方案。使用模板有用吗?我的想法是否定的,因为 Base1 和 Derived1 中的所有功能都需要知道它们分别处理 Base2 和 Derived2 对象。

最佳答案

当有人将 Derived1 类向下转换为 Base1 时,您预计会发生什么?当你破坏基类后使用 list 时它会崩溃。最好的办法是继续使用基类的 list,并确保只有 Derived2 类型的对象被放入列表中。如果无法从外部修改列表的内容,那将是可行且安全的。

是的,我知道关于这个还有很多要说的,但让我们一步一步来吧。

关于C++ 在派生类中更改成员类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6512826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com