派生 类 个派生特征

Derived classes derived traits

这是示意图:

Class B 有一些方法组 trait1。 Class B1C1 有相似的方法组 trait2trait2 派生自 trait1.

我如何实现它? 我打算将所有这些 traits 方法从主层次结构中移出到一些单独的层次结构中。然后从适当的特征中导出 BB1C1。但后来我意识到从 B 继承 B1 会有问题,因为 B1 也会有 trait1

现在我想我可以拥有一些类型的字段,比如 TraitBase,并使用 trait1trait2 类型的适当构造函数启动它。但是我不喜欢我应该有一个字段的想法,所以我的 class 有一些特殊的行为。可能有另一种解决方案吗?谢谢。

更新

我的意思是class B有一些特征,是在B1中派生出来的。 C1 应该具有 class B1 具有的特征。

class B
{
   virtual foo1();
   virtual foo2();


   virtual trait_method1(); //implementation 1
   virtual trait_method2(); //implementation 1
};

class B1 : public B
{
   virtual foo1();
   virtual foo2();


   virtual trait_method1(); //implementation 2
   virtual trait_method2(); //implementation 2
};

class C1 : public C
{
   virtual bar1();
   virtual bar2();


   trait_method1(); //implementation 2
   trait_method2(); //implementation 2
};

你的问题可能通过从 trait1 虚拟继承来解决:

class trait2 : virtual public trait1{} class B : public A, virtual public trait1{} class B1 : public B, public trait2{} class C1 : public C, public trait2{}

然而,这种设计只有在 class trait1 是无状态的情况下才有意义。如果不是,请考虑不同的设计,也许是桥接模式。