3

我正在编写一段代码,其中几个元素可以有一个方向,这意味着它们的空间位置是相对于参考系的。

我可以创建一个名为 的抽象基类OrientedObject,然后创建一组作用于此类实例的算法。

我还可以定义自己的oriented概念,并编写作用于满足该概念的类型的通用算法(类似于Boost Geometry Library的设计)。

根据 Boost Generic Programming Techniques页面:

概念是一组由有效表达式、关联类型、不变量和复杂性保证组成的需求。满足要求的类型被称为对该概念进行建模。一个概念可以扩展另一个概念的要求,这称为细化。

因此,该oriented概念可以定义为必要类型(如向量)、有效操作(如rotate)等的集合。

在我看来,如果继承对is关系建模,并且一个概念定义某事物是否是 a,那么一个概念代表一种继承形式,它恰好更实用和可扩展(沿着鸭子类型的行)如果还有更多智力复杂,无法正确定义。

现在,如果要创建相关类型的容器,继承是必要的。例如,除非它们属于同一个基类,否则我无法创建面向类型的容器。

所以,我很难决定是concept用继承还是继承来定义我的概念(我想不出任何其他形式)。

你能提供任何指导吗?

4

0 回答 0