0

我必须实现支持抽象数字的数据结构

集合是数字的集合

sorted 是一个排序集合

list 是数字的列表集合(包括重复项)

set 是没有重复的数字的集合。

Linked 和 Array 是保存数据的格式(linked 表示在堆中扩散,而数组表示连续的内存量)

然后是类的组合(图片中称为arraylist的数组列表等)

一个简单的 uml:

uml3;

最后四个组合中的每一个(图片中的最后一行)都需要实现一个方法调用 sorted 来制作它们自己的排序副本(返回 Sorted 类型)。我想创建 4 个新类,它们是从 sorted 和最后一行中的类继承的(例如,从 Sorted 类和 ArrayList 类继承的 ArrayListSorted 类),但后来我遇到了菱形问题(在同一个例子中,Sorted 和ArrayList 都是 Collection 的后代)

设计上有什么更好的主意吗?

4

1 回答 1

2

在 C++ 中,菱形问题可以通过使用虚拟公共继承来解决。使用虚拟公共继承,基类只被继承一次:

class A {...};
class B : virtual public A {...};
class C : virtual public A {...};
class D : public B, public C {...};
于 2013-05-17T14:01:35.573 回答