多重继承和异构集合
Multiple inheritance and a heterogeneous collection
我有三个从whirlyB
和gameCreature
继承的类。我正在使用gameCreatures
集合中的所有三个子类。有没有办法使用从whirlyB
继承的功能。我只能选择使用gameCreature
函数。我应该怎么做才能获得whirlyB
的功能?
这里有一个愚蠢的想法,针对的是您被一个基指针卡住但可以自由修改类的情况。假设我们有:
struct InBetween : Rock, HardPlace { /* ... */ }
并且假设您只有Rock
指针可用。按如下方式编辑Rock
:
struct Rock
{
virtual HardPlace * get_other() const = 0;
// ...
};
现在向每个派生类添加以下内容:
struct InBetween : Rock, HardPlace
{
virtual HardPlace * get_other() const { return this; }
// ...
};
现在,给定Rock * r
,就可以说HardPlace * h = r->get_other()
。
我不会真的称之为好的设计,甚至不推荐,但我认为这是对你问题的字面回答。
相关文章:
- 在C++中,如何创建包含可变模板对象的异构向量?
- 创建异构顶点数据数组的可移植方法
- std::variant vs指向C++中异构容器基类的指针
- C++中的集合(异构类型的数组)
- 从异构列表中提取数据
- Push_back一组(异构)向量的实现
- 使用 std::vector<char> 作为异构记录的存储是否安全?
- 是否可以使用 std::vector<std::any> vec;这将导致异构数据类型
- 异构容器查找 C++98
- 编译时排序的异构元组
- 异构初始化列表
- 派生实例不是指针时的基类的异构容器
- 顺序异构函数执行器
- 我们可以使用异构查找比较器对 STL 关联容器执行"partial-match"搜索吗?
- 异构作业处理器的并行化
- 使用专用函数对异构集合的 STL 算法
- 多重继承和异构集合
- 具有透明比较器和异构意义上的非唯一元素的映射或集合
- 模板异构类型的集合
- C++异构类型列的表(集合)