簡體   English   中英

派生類派生特征

[英]Derived classes derived traits

這是圖表: 類層次

B類具有一些方法trait1 B1C1具有類似的方法trait2組。 trait2源自trait1

我該如何實施? 我打算將所有這些trait方法從主層次結構移到一些單獨的方法中。 然后根據適當的性狀得出BB1C1 但是后來我意識到從B繼承B1會有問題,因為B1也將具有trait1

現在,我想我可以擁有一個類型為TraitBase ,並使用trait1trait2類型的適當ctor來啟動它。 但是我不喜歡應該有一個領域,這樣我的班級會有一些特殊的行為。 可能還有其他解決方案嗎? 謝謝。

更新

我的意思是B類具有某些功能,該功能是從B1派生的。 C1應該具有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{}

但是,只有類trait1是無狀態的,此設計才有意義。 如果沒有,請考慮其他設計,也許是橋接模式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM